Merge lp:~james-page/ubuntu/trusty/percona-xtradb-cluster-5.5/5.5.37-update into lp:ubuntu/trusty/percona-xtradb-cluster-5.5

Proposed by James Page
Status: Merged
Approved by: Marc Deslauriers
Approved revision: 7
Merge reported by: James Page
Merged at revision: not available
Proposed branch: lp:~james-page/ubuntu/trusty/percona-xtradb-cluster-5.5/5.5.37-update
Merge into: lp:ubuntu/trusty/percona-xtradb-cluster-5.5
Diff against target: 419110 lines (+276809/-101294)
2211 files modified
.pc/20_scripts__mysql_create_system_tables__no_test.dpatch/scripts/mysql_system_tables_data.sql (+3/-4)
.pc/30_scripts__mysqld_safe.sh__signals.dpatch/scripts/mysqld_safe.sh (+2/-2)
.pc/40_scripts__mysql_install_db.sh__no_test.dpatch/scripts/mysql_install_db.sh (+9/-8)
.pc/50_mysql-test__db_test.dpatch/mysql-test/mysql-test-run.pl (+20/-16)
.pc/CVE-2014-0001.patch/client/mysql.cc (+0/-5136)
.pc/applied-patches (+0/-3)
.pc/fix-implicit-conversion.patch/storage/innobase/trx/trx0i_s.c (+0/-1622)
.pc/patch-sql_sql__yacc.yy/sql/sql_yacc.yy (+0/-14884)
BUILD/cleanup (+1/-1)
BUILD/compile-alpha (+1/-1)
BUILD/compile-amd64-debug-max-no-ndb (+1/-1)
BUILD/compile-amd64-gcov (+1/-1)
BUILD/compile-amd64-gprof (+1/-1)
BUILD/compile-amd64-max-sci (+1/-1)
BUILD/compile-pentium-cybozu (+1/-1)
BUILD/compile-pentium-gcov (+1/-1)
BUILD/compile-pentium-gprof (+1/-1)
BUILD/compile-pentium-icc (+2/-1)
BUILD/compile-pentium-icc-yassl (+2/-1)
BUILD/compile-pentium-myodbc (+2/-1)
BUILD/compile-pentium64 (+1/-0)
BUILD/compile-pentium64-gcov (+1/-0)
BUILD/compile-pentium64-gprof (+1/-0)
BUILD/compile-pentium64-max (+1/-0)
BUILD/compile-pentium64-max-sci (+2/-1)
BUILD/compile-ppc (+2/-1)
BUILD/compile-solaris-amd64 (+1/-0)
BUILD/compile-solaris-amd64-debug (+2/-1)
CMakeLists.txt (+98/-4)
Docs/INFO_SRC (+8/-0)
Makefile-pxc (+57/-0)
README (+11/-56)
README.HandlerSocket (+10/-0)
README.MySQL (+56/-0)
UDF/Makefile.am (+2/-0)
UDF/Makefile.in (+286/-129)
UDF/aclocal.m4 (+302/-6575)
UDF/autom4te.cache/output.0 (+12863/-16120)
UDF/autom4te.cache/output.1 (+12869/-16114)
UDF/autom4te.cache/output.2 (+18196/-0)
UDF/autom4te.cache/requests (+351/-197)
UDF/autom4te.cache/traces.0 (+1681/-8398)
UDF/autom4te.cache/traces.1 (+484/-316)
UDF/autom4te.cache/traces.2 (+2486/-0)
UDF/config.guess (+586/-467)
UDF/config.h.in (+7/-0)
UDF/config.sub (+382/-100)
UDF/configure (+12854/-16099)
UDF/configure.ac (+3/-4)
UDF/depcomp (+261/-83)
UDF/install-sh (+381/-177)
UDF/ltmain.sh (+6551/-3801)
UDF/m4/libtool.m4 (+7983/-0)
UDF/m4/ltoptions.m4 (+384/-0)
UDF/m4/ltsugar.m4 (+123/-0)
UDF/m4/ltversion.m4 (+23/-0)
UDF/m4/lt~obsolete.m4 (+98/-0)
UDF/missing (+58/-87)
UDF/src/Makefile.in (+220/-114)
VERSION (+2/-2)
WSREP-REVISION (+1/-0)
build-ps/build-binary-nobzr.sh (+265/-0)
build-ps/build-binary.sh (+315/-0)
build-ps/build-dpkg.sh (+143/-0)
build-ps/build-rpm.sh (+162/-0)
build-ps/debian/README.source (+9/-0)
build-ps/debian/additions/debian-start (+39/-0)
build-ps/debian/additions/debian-start.inc.sh (+72/-0)
build-ps/debian/changelog (+47/-0)
build-ps/debian/changelog.ps (+90/-0)
build-ps/debian/compat (+1/-0)
build-ps/debian/control (+243/-0)
build-ps/debian/copyright (+86/-0)
build-ps/debian/copyright.ps (+787/-0)
build-ps/debian/libperconaserverclient18-dev.files (+11/-0)
build-ps/debian/libperconaserverclient18.files (+1/-0)
build-ps/debian/libperconaserverclient18.lintian-overrides (+2/-0)
build-ps/debian/libperconaserverclient18.postinst (+14/-0)
build-ps/debian/patches/00list (+4/-0)
build-ps/debian/patches/10_percona-server-prefix.dpatch (+54/-0)
build-ps/debian/patches/20_scripts__mysql_create_system_tables__no_test.dpatch (+32/-0)
build-ps/debian/patches/30_scripts__mysqld_safe.sh__signals.dpatch (+31/-0)
build-ps/debian/patches/40_scripts__mysql_install_db.sh__no_test.dpatch (+23/-0)
build-ps/debian/patches/50_mysql-test__db_test.dpatch (+24/-0)
build-ps/debian/percona-xtradb-cluster-client-5.5.README.Debian (+4/-0)
build-ps/debian/percona-xtradb-cluster-client-5.5.files (+31/-0)
build-ps/debian/percona-xtradb-cluster-client-5.5.links (+3/-0)
build-ps/debian/percona-xtradb-cluster-client-5.5.lintian-overrides (+12/-0)
build-ps/debian/percona-xtradb-cluster-client-5.5.menu (+1/-0)
build-ps/debian/percona-xtradb-cluster-common-5.5.dirs (+1/-0)
build-ps/debian/percona-xtradb-cluster-common-5.5.lintian-overrides (+1/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.README.Debian (+109/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.config (+46/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.dirs (+2/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.docs (+7/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.files (+64/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.links (+1/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.lintian-overrides (+15/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.logcheck.ignore.paranoid (+9/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.logcheck.ignore.server (+32/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.logcheck.ignore.workstation (+32/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.logrotate (+27/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.mysql.init (+333/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.postinst (+294/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.postrm (+86/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.preinst (+192/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.prerm (+8/-0)
build-ps/debian/percona-xtradb-cluster-server-5.5.templates (+91/-0)
build-ps/debian/percona-xtradb-cluster-source-5.5.files (+1/-0)
build-ps/debian/percona-xtradb-cluster-test-5.5.files (+2/-0)
build-ps/debian/percona-xtradb-cluster-test-5.5.lintian-overrides (+1/-0)
build-ps/debian/percona-xtradb-cluster-test.5.5.links (+2/-0)
build-ps/debian/po/POTFILES.in (+1/-0)
build-ps/debian/po/ar.po (+252/-0)
build-ps/debian/po/ca.po (+227/-0)
build-ps/debian/po/cs.po (+346/-0)
build-ps/debian/po/da.po (+382/-0)
build-ps/debian/po/de.po (+239/-0)
build-ps/debian/po/es.po (+390/-0)
build-ps/debian/po/eu.po (+236/-0)
build-ps/debian/po/fr.po (+251/-0)
build-ps/debian/po/gl.po (+249/-0)
build-ps/debian/po/it.po (+223/-0)
build-ps/debian/po/ja.po (+229/-0)
build-ps/debian/po/nb.po (+297/-0)
build-ps/debian/po/nl.po (+290/-0)
build-ps/debian/po/pt.po (+307/-0)
build-ps/debian/po/pt_BR.po (+443/-0)
build-ps/debian/po/ro.po (+319/-0)
build-ps/debian/po/ru.po (+229/-0)
build-ps/debian/po/sk.po (+219/-0)
build-ps/debian/po/sv.po (+229/-0)
build-ps/debian/po/templates.pot (+187/-0)
build-ps/debian/po/tr.po (+342/-0)
build-ps/debian/rules (+371/-0)
build-ps/debian/source/format (+1/-0)
build-ps/percona-xtradb-cluster.spec (+2030/-0)
client/CMakeLists.txt (+2/-1)
client/client_priv.h (+1/-0)
client/mysql.cc (+4/-4)
client/mysql_plugin.c (+2/-2)
client/mysql_upgrade.c (+1/-0)
client/mysqlbinlog.cc (+182/-5)
client/mysqlcheck.c (+1/-1)
cmake/info_macros.cmake.in (+1/-1)
cmake/install_macros.cmake (+10/-10)
cmake/libutils.cmake (+2/-1)
cmake/make_dist.cmake.in (+20/-0)
cmake/mysql_version.cmake (+6/-5)
cmake/os/Linux.cmake (+5/-2)
cmake/wsrep.cmake (+2/-2)
cmake/zlib.cmake (+1/-2)
config.h.cmake (+2/-1)
configure.cmake (+4/-0)
debian/changelog (+32/-0)
debian/patches/20_scripts__mysql_create_system_tables__no_test.dpatch (+4/-4)
debian/patches/CVE-2014-0001.patch (+0/-14)
debian/patches/fix-implicit-conversion.patch (+0/-21)
debian/patches/patch-sql_sql__yacc.yy (+0/-43)
debian/patches/series (+0/-3)
debian/rules (+2/-2)
doc-pxc/Makefile (+150/-0)
doc-pxc/make.bat (+155/-0)
doc-pxc/source/conf.py (+282/-0)
doc-pxc/source/errata.rst (+39/-0)
doc-pxc/source/ext/psdom.py (+387/-0)
doc-pxc/source/faq.rst (+113/-0)
doc-pxc/source/features/highavailability.rst (+22/-0)
doc-pxc/source/features/multimaster-replication.rst (+29/-0)
doc-pxc/source/glossary.rst (+111/-0)
doc-pxc/source/howtos/3nodesec2.rst (+151/-0)
doc-pxc/source/howtos/bugreport.rst (+6/-0)
doc-pxc/source/howtos/cenots_howto.rst (+296/-0)
doc-pxc/source/howtos/haproxy.rst (+91/-0)
doc-pxc/source/howtos/singlebox.rst (+135/-0)
doc-pxc/source/howtos/ubuntu_howto.rst (+293/-0)
doc-pxc/source/howtos/virt_sandbox.rst (+284/-0)
doc-pxc/source/index.rst (+107/-0)
doc-pxc/source/installation.rst (+86/-0)
doc-pxc/source/installation/apt_repo.rst (+65/-0)
doc-pxc/source/installation/compiling_xtradb_cluster.rst (+49/-0)
doc-pxc/source/installation/yum_repo.rst (+43/-0)
doc-pxc/source/intro.rst (+62/-0)
doc-pxc/source/limitation.rst (+28/-0)
doc-pxc/source/manual/bootstrap.rst (+45/-0)
doc-pxc/source/manual/failover.rst (+48/-0)
doc-pxc/source/manual/monitoring.rst (+42/-0)
doc-pxc/source/manual/restarting_nodes.rst (+12/-0)
doc-pxc/source/manual/state_snapshot_transfer.rst (+54/-0)
doc-pxc/source/manual/xtrabackup_sst.rst (+226/-0)
doc-pxc/source/percona-theme/layout.html (+382/-0)
doc-pxc/source/percona-theme/searchbox.html (+22/-0)
doc-pxc/source/percona-theme/static/default.css_t (+433/-0)
doc-pxc/source/percona-theme/static/jquery.min.js (+154/-0)
doc-pxc/source/percona-theme/static/percona.com.css (+1850/-0)
doc-pxc/source/percona-theme/static/percona.com.js (+269/-0)
doc-pxc/source/percona-theme/static/sidebar.js (+151/-0)
doc-pxc/source/percona-theme/theme.conf (+32/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.23.rst (+19/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.24.rst (+16/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.27.rst (+38/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.28.rst (+56/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.29-23.7.2.rst (+20/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.29.rst (+44/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.30-23.7.4.rst (+84/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.31-23.7.5.rst (+73/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.33-23.7.6.rst (+92/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.34-23.7.6.rst (+60/-0)
doc-pxc/source/release-notes/Percona-XtraDB-Cluster-5.5.34-25.9.rst (+66/-0)
doc-pxc/source/release-notes/release-notes_index.rst (+20/-0)
doc-pxc/source/wsrep-files-index.rst (+68/-0)
doc-pxc/source/wsrep-status-index.rst (+170/-0)
doc-pxc/source/wsrep-system-index.rst (+380/-0)
extra/yassl/CMakeLists.txt (+6/-1)
extra/yassl/README (+30/-1)
extra/yassl/certs/ca-cert.pem (+73/-42)
extra/yassl/certs/ca-key.pem (+25/-7)
extra/yassl/certs/client-cert.pem (+69/-37)
extra/yassl/certs/client-key.pem (+25/-7)
extra/yassl/certs/client-keyEnc.pem (+25/-7)
extra/yassl/certs/dsa-cert.pem (+20/-68)
extra/yassl/certs/server-cert.pem (+148/-30)
extra/yassl/certs/server-key.pem (+25/-7)
extra/yassl/certs/server-keyEnc.pem (+25/-7)
extra/yassl/include/cert_wrapper.hpp (+5/-2)
extra/yassl/include/crypto_wrapper.hpp (+1/-0)
extra/yassl/include/factory.hpp (+1/-0)
extra/yassl/include/handshake.hpp (+1/-0)
extra/yassl/include/log.hpp (+1/-0)
extra/yassl/include/openssl/crypto.h (+1/-0)
extra/yassl/include/openssl/des.h (+1/-0)
extra/yassl/include/openssl/des_old.h (+1/-0)
extra/yassl/include/openssl/engine.h (+1/-0)
extra/yassl/include/openssl/err.h (+1/-0)
extra/yassl/include/openssl/evp.h (+1/-0)
extra/yassl/include/openssl/generate_prefix_files.pl (+1/-0)
extra/yassl/include/openssl/hmac.h (+1/-0)
extra/yassl/include/openssl/lhash.h (+1/-0)
extra/yassl/include/openssl/md4.h (+1/-0)
extra/yassl/include/openssl/md5.h (+1/-0)
extra/yassl/include/openssl/objects.h (+1/-0)
extra/yassl/include/openssl/opensslv.h (+1/-0)
extra/yassl/include/openssl/pem.h (+1/-0)
extra/yassl/include/openssl/pkcs12.h (+1/-0)
extra/yassl/include/openssl/prefix_crypto.h (+1/-0)
extra/yassl/include/openssl/rand.h (+1/-0)
extra/yassl/include/openssl/rsa.h (+1/-0)
extra/yassl/include/openssl/sha.h (+1/-0)
extra/yassl/include/openssl/ssl.h (+2/-2)
extra/yassl/include/openssl/x509.h (+1/-0)
extra/yassl/include/openssl/x509v3.h (+1/-0)
extra/yassl/include/timer.hpp (+1/-0)
extra/yassl/include/yassl.hpp (+1/-0)
extra/yassl/include/yassl_error.hpp (+1/-1)
extra/yassl/include/yassl_types.hpp (+1/-1)
extra/yassl/src/cert_wrapper.cpp (+12/-2)
extra/yassl/src/crypto_wrapper.cpp (+2/-2)
extra/yassl/src/handshake.cpp (+3/-1)
extra/yassl/src/log.cpp (+1/-0)
extra/yassl/src/timer.cpp (+1/-0)
extra/yassl/src/yassl_error.cpp (+1/-1)
extra/yassl/src/yassl_imp.cpp (+28/-10)
extra/yassl/taocrypt/CMakeLists.txt (+6/-1)
extra/yassl/taocrypt/include/algebra.hpp (+1/-0)
extra/yassl/taocrypt/include/arc4.hpp (+1/-0)
extra/yassl/taocrypt/include/coding.hpp (+1/-0)
extra/yassl/taocrypt/include/dh.hpp (+1/-0)
extra/yassl/taocrypt/include/dsa.hpp (+1/-0)
extra/yassl/taocrypt/include/error.hpp (+1/-0)
extra/yassl/taocrypt/include/hmac.hpp (+1/-0)
extra/yassl/taocrypt/include/integer.hpp (+8/-0)
extra/yassl/taocrypt/include/md2.hpp (+1/-0)
extra/yassl/taocrypt/include/md4.hpp (+1/-0)
extra/yassl/taocrypt/include/md5.hpp (+1/-0)
extra/yassl/taocrypt/include/misc.hpp (+8/-1)
extra/yassl/taocrypt/include/modarith.hpp (+1/-0)
extra/yassl/taocrypt/include/random.hpp (+1/-0)
extra/yassl/taocrypt/include/ripemd.hpp (+1/-0)
extra/yassl/taocrypt/include/sha.hpp (+1/-0)
extra/yassl/taocrypt/include/twofish.hpp (+1/-0)
extra/yassl/taocrypt/include/type_traits.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/algorithm.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/helpers.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/list.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/memory.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/memory_array.hpp (+1/-0)
extra/yassl/taocrypt/mySTL/pair.hpp (+1/-0)
extra/yassl/taocrypt/src/aes.cpp (+54/-28)
extra/yassl/taocrypt/src/arc4.cpp (+29/-20)
extra/yassl/taocrypt/src/bftables.cpp (+1/-0)
extra/yassl/taocrypt/src/blowfish.cpp (+25/-18)
extra/yassl/taocrypt/src/des.cpp (+28/-25)
extra/yassl/taocrypt/src/dh.cpp (+1/-0)
extra/yassl/taocrypt/src/file.cpp (+1/-0)
extra/yassl/taocrypt/src/integer.cpp (+4/-2)
extra/yassl/taocrypt/src/md2.cpp (+1/-0)
extra/yassl/taocrypt/src/md5.cpp (+29/-21)
extra/yassl/taocrypt/src/rabbit.cpp (+10/-5)
extra/yassl/taocrypt/src/ripemd.cpp (+28/-19)
extra/yassl/taocrypt/src/sha.cpp (+31/-20)
extra/yassl/taocrypt/src/tftables.cpp (+1/-0)
extra/yassl/taocrypt/src/twofish.cpp (+29/-20)
extra/yassl/taocrypt/test/test.cpp (+7/-7)
include/m_ctype.h (+2/-2)
include/my_check_opt.h (+69/-0)
include/my_getopt.h (+1/-1)
include/my_net.h (+1/-1)
include/my_pthread.h (+2/-2)
include/myisam.h (+2/-47)
include/mysql/plugin.h (+1/-1)
include/mysql/plugin_audit.h (+1/-1)
include/mysql/psi/mysql_thread.h (+2/-2)
include/mysql_version.h.in (+4/-3)
include/t_ctype.h (+1/-0)
include/thr_lock.h (+1/-1)
include/welcome_copyright_notice.h (+2/-2)
libmysql/CMakeLists.txt (+33/-7)
libmysql/authentication_win/CMakeLists.txt (+6/-1)
libmysql/conf_to_src.c (+1/-1)
libmysql/libmysql.c (+1/-1)
libmysqld/CMakeLists.txt (+35/-1)
libmysqld/examples/test-run (+1/-0)
libmysqld/lib_sql.cc (+1/-1)
man/comp_err.1 (+6/-6)
man/innochecksum.1 (+6/-4)
man/msql2mysql.1 (+4/-4)
man/my_print_defaults.1 (+6/-6)
man/myisam_ftdump.1 (+4/-4)
man/myisamchk.1 (+8/-7)
man/myisamlog.1 (+4/-4)
man/myisampack.1 (+18/-6)
man/mysql-stress-test.pl.1 (+3/-3)
man/mysql-test-run.pl.1 (+3/-3)
man/mysql.1 (+8/-8)
man/mysql.server.1 (+5/-5)
man/mysql_client_test.1 (+3/-3)
man/mysql_client_test_embedded.1 (+1/-1)
man/mysql_config.1 (+4/-4)
man/mysql_convert_table_format.1 (+5/-5)
man/mysql_find_rows.1 (+4/-4)
man/mysql_fix_extensions.1 (+4/-4)
man/mysql_install_db.1 (+4/-4)
man/mysql_plugin.1 (+4/-4)
man/mysql_secure_installation.1 (+6/-6)
man/mysql_setpermission.1 (+5/-5)
man/mysql_tzinfo_to_sql.1 (+4/-4)
man/mysql_upgrade.1 (+26/-6)
man/mysql_waitpid.1 (+4/-4)
man/mysql_zap.1 (+4/-4)
man/mysqlaccess.1 (+4/-4)
man/mysqladmin.1 (+8/-8)
man/mysqlbinlog.1 (+6/-6)
man/mysqlbug.1 (+4/-4)
man/mysqlcheck.1 (+8/-8)
man/mysqld.8 (+4/-4)
man/mysqld_multi.1 (+6/-6)
man/mysqld_safe.1 (+5/-5)
man/mysqldump.1 (+30/-24)
man/mysqldumpslow.1 (+4/-4)
man/mysqlhotcopy.1 (+4/-4)
man/mysqlimport.1 (+7/-7)
man/mysqlshow.1 (+7/-7)
man/mysqlslap.1 (+8/-8)
man/mysqltest.1 (+3/-3)
man/mysqltest_embedded.1 (+1/-1)
man/ndb-common-options.1 (+4/-4)
man/ndb_blob_tool.1 (+4/-4)
man/ndb_config.1 (+6/-5)
man/ndb_cpcd.1 (+4/-4)
man/ndb_delete_all.1 (+4/-4)
man/ndb_desc.1 (+4/-4)
man/ndb_drop_index.1 (+5/-5)
man/ndb_drop_table.1 (+4/-4)
man/ndb_error_reporter.1 (+211/-11)
man/ndb_index_stat.1 (+4/-4)
man/ndb_mgm.1 (+4/-4)
man/ndb_mgmd.8 (+44/-7)
man/ndb_print_backup_file.1 (+4/-4)
man/ndb_print_schema_file.1 (+4/-4)
man/ndb_print_sys_file.1 (+4/-4)
man/ndb_restore.1 (+43/-7)
man/ndb_select_all.1 (+34/-5)
man/ndb_select_count.1 (+4/-4)
man/ndb_show_tables.1 (+4/-4)
man/ndb_size.pl.1 (+4/-4)
man/ndb_waiter.1 (+4/-4)
man/ndbd.8 (+6/-6)
man/ndbd_redo_log_reader.1 (+43/-4)
man/ndbinfo_select_all.1 (+4/-4)
man/ndbmtd.8 (+5/-5)
man/perror.1 (+4/-4)
man/replace.1 (+4/-4)
man/resolve_stack_dump.1 (+4/-4)
man/resolveip.1 (+4/-4)
mysql-test/CMakeLists.txt (+2/-2)
mysql-test/README (+2/-3)
mysql-test/collections/default.experimental (+1/-0)
mysql-test/collections/default.weekly (+3/-0)
mysql-test/extra/rpl_tests/grep_pattern.inc (+22/-0)
mysql-test/extra/rpl_tests/rpl_drop_create_temp_table.inc (+7/-3)
mysql-test/extra/rpl_tests/rpl_innodb.test (+1/-1)
mysql-test/extra/rpl_tests/rpl_reset_slave.test (+3/-0)
mysql-test/include/audit_log_events.inc (+53/-0)
mysql-test/include/ctype_filesort2.inc (+9/-0)
mysql-test/include/default_my.cnf (+1/-0)
mysql-test/include/have_perfschema.inc (+1/-0)
mysql-test/include/have_scalability_metrics_plugin.inc (+21/-0)
mysql-test/include/have_socket_auth_plugin.inc (+22/-0)
mysql-test/include/mtr_check.sql (+11/-1)
mysql-test/include/plugin.defs (+3/-0)
mysql-test/include/search_pattern_in_file.inc (+66/-0)
mysql-test/lib/My/SafeProcess/safe_process.cc (+1/-1)
mysql-test/lib/My/SysInfo.pm (+1/-2)
mysql-test/lib/mtr_match.pm (+1/-0)
mysql-test/mysql-test-run.pl (+20/-16)
mysql-test/purify.supp (+1/-0)
mysql-test/r/audit_log.result (+140/-0)
mysql-test/r/audit_log_install.result (+4/-0)
mysql-test/r/ctype_utf16.result (+15/-0)
mysql-test/r/ctype_utf32.result (+15/-0)
mysql-test/r/ctype_utf8mb4.result (+15/-0)
mysql-test/r/distinct.result (+40/-0)
mysql-test/r/events_trans.result (+1/-0)
mysql-test/r/gis.result (+21/-0)
mysql-test/r/mysql_plugin.result (+2/-2)
mysql-test/r/mysqld--help-notwin.result (+11/-0)
mysql-test/r/mysqld--help-win.result (+11/-0)
mysql-test/r/openssl_1.result (+1/-1)
mysql-test/r/parser.result (+25/-0)
mysql-test/r/percona_bug1016991.result (+13/-0)
mysql-test/r/percona_bug1182535.result (+24/-0)
mysql-test/r/percona_bug1266980.result (+5/-0)
mysql-test/r/percona_bug1289599.result (+12/-0)
mysql-test/r/percona_innodb_version.result (+1/-1)
mysql-test/r/percona_mysqlbinlog_ssl_compress.result (+21/-0)
mysql-test/r/percona_server_variables_debug.result (+3/-0)
mysql-test/r/percona_server_variables_release.result (+3/-0)
mysql-test/r/percona_slow_query_log_always_write.result (+3/-0)
mysql-test/r/percona_slow_query_log_rate.result (+3/-0)
mysql-test/r/percona_slow_query_log_rate_limit_write.result (+3/-0)
mysql-test/r/percona_slowlog_size_limits.result (+21/-0)
mysql-test/r/scalability_metrics.result (+46/-0)
mysql-test/suite/binlog/r/binlog_mysqlbinlog_rewrite_db.result (+33/-0)
mysql-test/suite/binlog/r/binlog_rewrite_db_noleak.result (+29/-0)
mysql-test/suite/binlog/r/binlog_rewrite_suppress_use.result (+29/-0)
mysql-test/suite/binlog/r/percona_mysqlbinlog_rewritedb.result (+152/-0)
mysql-test/suite/binlog/t/binlog_mysqlbinlog_rewrite_db.test (+95/-0)
mysql-test/suite/binlog/t/binlog_rewrite_db_noleak.test (+79/-0)
mysql-test/suite/binlog/t/binlog_rewrite_suppress_use.test (+61/-0)
mysql-test/suite/binlog/t/percona_mysqlbinlog_rewritedb-master.opt (+1/-0)
mysql-test/suite/binlog/t/percona_mysqlbinlog_rewritedb.test (+80/-0)
mysql-test/suite/innodb/r/blob-update-debug.result (+15/-0)
mysql-test/suite/innodb/r/create-index.result (+9/-0)
mysql-test/suite/innodb/r/innodb-autoinc.result (+27/-0)
mysql-test/suite/innodb/r/innodb-change-buffer-recovery.result (+39/-0)
mysql-test/suite/innodb/r/innodb-create-options.result (+0/-854)
mysql-test/suite/innodb/r/innodb-update-insert.result (+43/-0)
mysql-test/suite/innodb/r/innodb-zip.result (+0/-410)
mysql-test/suite/innodb/r/innodb_bug13510739.result (+1/-1)
mysql-test/suite/innodb/r/innodb_bug36169.result (+0/-2)
mysql-test/suite/innodb/r/innodb_bug36172.result (+0/-1)
mysql-test/suite/innodb/r/innodb_bug52745.result (+0/-130)
mysql-test/suite/innodb/r/innodb_bug53591.result (+0/-15)
mysql-test/suite/innodb/r/innodb_bug56680.result (+0/-109)
mysql-test/suite/innodb/r/innodb_cmp_drop_table.result (+0/-14)
mysql-test/suite/innodb/r/innodb_index_large_prefix.result (+0/-184)
mysql-test/suite/innodb/r/innodb_prefix_index_liftedlimit.result (+0/-1353)
mysql-test/suite/innodb/r/percona_bug758788.result (+9/-0)
mysql-test/suite/innodb/r/percona_changed_page_bmp_requests.result (+23/-1)
mysql-test/suite/innodb/t/blob-update-debug.test (+17/-0)
mysql-test/suite/innodb/t/create-index.test (+11/-0)
mysql-test/suite/innodb/t/innodb-autoinc.test (+14/-0)
mysql-test/suite/innodb/t/innodb-change-buffer-recovery-master.opt (+1/-0)
mysql-test/suite/innodb/t/innodb-change-buffer-recovery.test (+70/-0)
mysql-test/suite/innodb/t/innodb-create-options.test (+0/-573)
mysql-test/suite/innodb/t/innodb-update-insert.test (+38/-0)
mysql-test/suite/innodb/t/innodb-zip.test (+0/-342)
mysql-test/suite/innodb/t/innodb.test (+0/-6)
mysql-test/suite/innodb/t/innodb_bug36169.test (+0/-1160)
mysql-test/suite/innodb/t/innodb_bug36172.test (+0/-30)
mysql-test/suite/innodb/t/innodb_bug52745.test (+0/-107)
mysql-test/suite/innodb/t/innodb_bug53591.test (+0/-20)
mysql-test/suite/innodb/t/innodb_bug56680.test (+0/-140)
mysql-test/suite/innodb/t/innodb_cmp_drop_table-master.opt (+0/-1)
mysql-test/suite/innodb/t/innodb_cmp_drop_table.test (+0/-60)
mysql-test/suite/innodb/t/innodb_index_large_prefix.test (+0/-269)
mysql-test/suite/innodb/t/innodb_prefix_index_liftedlimit.test (+0/-1338)
mysql-test/suite/innodb/t/percona_bug758788-master.opt (+1/-0)
mysql-test/suite/innodb/t/percona_bug758788.test (+24/-0)
mysql-test/suite/innodb/t/percona_changed_page_bmp_requests.test (+34/-6)
mysql-test/suite/innodb_zip/r/innodb-create-options.result (+854/-0)
mysql-test/suite/innodb_zip/r/innodb-zip.result (+410/-0)
mysql-test/suite/innodb_zip/r/innodb_bug36169.result (+2/-0)
mysql-test/suite/innodb_zip/r/innodb_bug36172.result (+1/-0)
mysql-test/suite/innodb_zip/r/innodb_bug52745.result (+130/-0)
mysql-test/suite/innodb_zip/r/innodb_bug53591.result (+15/-0)
mysql-test/suite/innodb_zip/r/innodb_bug56680.result (+109/-0)
mysql-test/suite/innodb_zip/r/innodb_cmp_drop_table.result (+14/-0)
mysql-test/suite/innodb_zip/r/innodb_index_large_prefix.result (+184/-0)
mysql-test/suite/innodb_zip/r/innodb_prefix_index_liftedlimit.result (+1353/-0)
mysql-test/suite/innodb_zip/t/innodb-create-options.test (+573/-0)
mysql-test/suite/innodb_zip/t/innodb-zip.test (+342/-0)
mysql-test/suite/innodb_zip/t/innodb_bug36169.test (+1160/-0)
mysql-test/suite/innodb_zip/t/innodb_bug36172.test (+30/-0)
mysql-test/suite/innodb_zip/t/innodb_bug52745.test (+107/-0)
mysql-test/suite/innodb_zip/t/innodb_bug53591.test (+20/-0)
mysql-test/suite/innodb_zip/t/innodb_bug56680.test (+140/-0)
mysql-test/suite/innodb_zip/t/innodb_cmp_drop_table-master.opt (+1/-0)
mysql-test/suite/innodb_zip/t/innodb_cmp_drop_table.test (+60/-0)
mysql-test/suite/innodb_zip/t/innodb_index_large_prefix.test (+269/-0)
mysql-test/suite/innodb_zip/t/innodb_prefix_index_liftedlimit.test (+1338/-0)
mysql-test/suite/perfschema_stress/README (+1/-0)
mysql-test/suite/rpl/r/rpl_create_tmp_table_if_not_exists.result (+3/-0)
mysql-test/suite/rpl/r/rpl_lost_events_on_rotate.result (+14/-0)
mysql-test/suite/rpl/r/rpl_mixed_ddl_dml.result (+1/-0)
mysql-test/suite/rpl/r/rpl_mixed_drop_create_temp_table.result (+6/-0)
mysql-test/suite/rpl/r/rpl_percona_bug1070255.result (+35/-0)
mysql-test/suite/rpl/r/rpl_percona_gmvac_net_err.result (+30/-0)
mysql-test/suite/rpl/r/rpl_rotate_logs.result (+1/-0)
mysql-test/suite/rpl/r/rpl_row_drop_create_temp_table.result (+6/-0)
mysql-test/suite/rpl/r/rpl_row_reset_slave.result (+1/-0)
mysql-test/suite/rpl/r/rpl_stm_000001.result (+1/-0)
mysql-test/suite/rpl/r/rpl_stm_drop_create_temp_table.result (+6/-0)
mysql-test/suite/rpl/r/rpl_stm_innodb.result (+1/-0)
mysql-test/suite/rpl/r/rpl_stm_reset_slave.result (+1/-0)
mysql-test/suite/rpl/t/rpl_create_tmp_table_if_not_exists.test (+4/-0)
mysql-test/suite/rpl/t/rpl_lost_events_on_rotate.test (+51/-0)
mysql-test/suite/rpl/t/rpl_mixed_ddl_dml.test (+1/-0)
mysql-test/suite/rpl/t/rpl_percona_bug1070255.test (+51/-0)
mysql-test/suite/rpl/t/rpl_percona_gmvac_net_err.test (+67/-0)
mysql-test/suite/rpl/t/rpl_rotate_logs.test (+1/-0)
mysql-test/suite/rpl/t/rpl_stm_000001.test (+1/-1)
mysql-test/suite/sys_vars/r/general_log_file_basic.result (+1/-0)
mysql-test/suite/sys_vars/r/innodb_thread_sleep_delay_basic.result (+30/-0)
mysql-test/suite/sys_vars/r/log_slow_rate_limit_basic.result (+27/-3)
mysql-test/suite/sys_vars/r/max_slowlog_files_basic.result (+30/-0)
mysql-test/suite/sys_vars/r/max_slowlog_size_basic.result (+32/-0)
mysql-test/suite/sys_vars/r/slow_query_log_file_basic.result (+1/-0)
mysql-test/suite/sys_vars/r/thread_pool_high_prio_mode_basic.result (+34/-0)
mysql-test/suite/sys_vars/r/thread_pool_high_prio_tickets_basic.result (+12/-7)
mysql-test/suite/sys_vars/r/thread_pool_max_threads_basic.result (+12/-6)
mysql-test/suite/sys_vars/t/general_log_file_basic.test (+1/-1)
mysql-test/suite/sys_vars/t/identity_func.test (+0/-6)
mysql-test/suite/sys_vars/t/innodb_autoinc_lock_mode_func.test (+0/-6)
mysql-test/suite/sys_vars/t/innodb_thread_sleep_delay_basic.test (+18/-0)
mysql-test/suite/sys_vars/t/last_insert_id_func.test (+0/-6)
mysql-test/suite/sys_vars/t/log_slow_rate_limit_basic.test (+11/-1)
mysql-test/suite/sys_vars/t/max_slowlog_files_basic.test (+18/-0)
mysql-test/suite/sys_vars/t/max_slowlog_size_basic.test (+18/-0)
mysql-test/suite/sys_vars/t/slow_query_log_file_basic.test (+1/-1)
mysql-test/suite/sys_vars/t/storage_engine_basic.test (+0/-6)
mysql-test/suite/sys_vars/t/thread_pool_high_prio_mode_basic.test (+35/-0)
mysql-test/suite/sys_vars/t/thread_pool_high_prio_tickets_basic.test (+6/-5)
mysql-test/suite/sys_vars/t/thread_pool_max_threads_basic.test (+2/-0)
mysql-test/suite/sys_vars/t/tx_isolation_func.test (+0/-6)
mysql-test/t/audit_log-master.opt (+4/-0)
mysql-test/t/audit_log.test (+23/-0)
mysql-test/t/audit_log_install-master.opt (+1/-0)
mysql-test/t/audit_log_install.test (+14/-0)
mysql-test/t/distinct.test (+37/-0)
mysql-test/t/events_trans.test (+1/-0)
mysql-test/t/gis.test (+18/-0)
mysql-test/t/mysql_plugin.test (+2/-2)
mysql-test/t/parser.test (+25/-0)
mysql-test/t/percona_bug1016991-master.opt (+1/-0)
mysql-test/t/percona_bug1016991.test (+20/-0)
mysql-test/t/percona_bug1182535-master.opt (+1/-0)
mysql-test/t/percona_bug1182535.test (+48/-0)
mysql-test/t/percona_bug1266980.test (+5/-0)
mysql-test/t/percona_bug1289599-master.opt (+1/-0)
mysql-test/t/percona_bug1289599.test (+33/-0)
mysql-test/t/percona_innodb_version.test (+1/-1)
mysql-test/t/percona_mysqlbinlog_ssl_compress.test (+35/-0)
mysql-test/t/percona_slow_query_log_always_write.test (+5/-0)
mysql-test/t/percona_slow_query_log_rate.test (+10/-0)
mysql-test/t/percona_slow_query_log_rate_limit_write.test (+5/-0)
mysql-test/t/percona_slowlog_size_limits.test (+60/-0)
mysql-test/t/scalability_metrics-master.opt (+1/-0)
mysql-test/t/scalability_metrics.test (+68/-0)
mysys/CMakeLists.txt (+5/-0)
mysys/md5.c (+1/-1)
mysys/mf_arr_appstr.c (+1/-0)
mysys/mf_iocache2.c (+16/-3)
mysys/mf_keycache.c (+1/-1)
mysys/mf_qsort.c (+2/-1)
mysys/mf_qsort2.c (+1/-0)
mysys/mf_radix.c (+2/-1)
mysys/mf_same.c (+2/-1)
mysys/mf_soundex.c (+2/-1)
mysys/mf_tempdir.c (+2/-2)
mysys/mf_tempfile.c (+2/-2)
mysys/mf_wcomp.c (+2/-1)
mysys/mulalloc.c (+2/-1)
mysys/my_access.c (+1/-1)
mysys/my_aes.c (+2/-1)
mysys/my_alarm.c (+1/-0)
mysys/my_conio.c (+2/-1)
mysys/my_crc32.c (+2/-1)
mysys/my_div.c (+2/-1)
mysys/my_error.c (+1/-1)
mysys/my_fopen.c (+1/-1)
mysys/my_getpagesize.c (+2/-1)
mysys/my_libwrap.c (+2/-1)
mysys/my_lockmem.c (+1/-1)
mysys/my_malloc.c (+1/-1)
mysys/my_memmem.c (+2/-1)
mysys/my_mkdir.c (+2/-1)
mysys/my_once.c (+1/-1)
mysys/my_symlink2.c (+2/-1)
mysys/my_wincond.c (+2/-2)
mysys/my_winthread.c (+1/-1)
mysys/sha1.c (+1/-0)
mysys/test_dir.c (+2/-1)
mysys/test_xml.c (+2/-1)
mysys/thr_alarm.c (+1/-1)
mysys/thr_lock.c (+3/-3)
packaging/WiX/CPackWixConfig.cmake (+1/-1)
packaging/WiX/custom_ui.wxs (+2/-2)
packaging/WiX/mysql_server.wxs.in (+28/-16)
packaging/rpm-oel/CMakeLists.txt (+36/-0)
packaging/rpm-oel/filter-provides.sh (+6/-0)
packaging/rpm-oel/filter-requires.sh (+6/-0)
packaging/rpm-oel/my.cnf (+31/-0)
packaging/rpm-oel/my_config.h (+30/-0)
packaging/rpm-oel/mysql-5.5-libmysqlclient-symbols.patch (+982/-0)
packaging/rpm-oel/mysql-systemd-start (+52/-0)
packaging/rpm-oel/mysql.conf (+1/-0)
packaging/rpm-oel/mysql.init (+209/-0)
packaging/rpm-oel/mysql.spec.in (+1591/-0)
packaging/rpm-oel/mysql_config.sh (+28/-0)
packaging/rpm-oel/mysqld.service (+48/-0)
packaging/rpm-uln/mysql.spec.sh (+6/-1)
percona-xtradb-cluster-tests/conf/bug1098566-1.cnf-node1 (+19/-0)
percona-xtradb-cluster-tests/conf/bug1098566-1.cnf-node2 (+19/-0)
percona-xtradb-cluster-tests/conf/bug1098566-2.cnf-node1 (+19/-0)
percona-xtradb-cluster-tests/conf/bug1098566-2.cnf-node2 (+19/-0)
percona-xtradb-cluster-tests/conf/bug1098566-3.cnf-node1 (+21/-0)
percona-xtradb-cluster-tests/conf/bug1098566-3.cnf-node2 (+22/-0)
percona-xtradb-cluster-tests/conf/bug1098566.cnf-node1 (+1/-1)
percona-xtradb-cluster-tests/conf/bug1098566.cnf-node2 (+1/-1)
percona-xtradb-cluster-tests/conf/conf11.cnf-node1 (+0/-1)
percona-xtradb-cluster-tests/conf/conf11.cnf-node2 (+0/-1)
percona-xtradb-cluster-tests/conf/conf15.cnf-node1 (+11/-0)
percona-xtradb-cluster-tests/conf/conf15.cnf-node2 (+10/-0)
percona-xtradb-cluster-tests/conf/conf16.cnf-node1 (+16/-0)
percona-xtradb-cluster-tests/conf/conf16.cnf-node2 (+10/-0)
percona-xtradb-cluster-tests/conf/conf17.cnf-node1 (+16/-0)
percona-xtradb-cluster-tests/conf/conf17.cnf-node2 (+15/-0)
percona-xtradb-cluster-tests/conf/conf18.cnf-node1 (+17/-0)
percona-xtradb-cluster-tests/conf/conf18.cnf-node2 (+16/-0)
percona-xtradb-cluster-tests/conf/conf19.cnf-node1 (+16/-0)
percona-xtradb-cluster-tests/conf/conf19.cnf-node2 (+16/-0)
percona-xtradb-cluster-tests/conf/conf2.cnf-node1 (+4/-1)
percona-xtradb-cluster-tests/conf/conf2.cnf-node2 (+2/-0)
percona-xtradb-cluster-tests/conf/conf20.cnf-node1 (+19/-0)
percona-xtradb-cluster-tests/conf/conf20.cnf-node2 (+19/-0)
percona-xtradb-cluster-tests/conf/conf21.cnf-node1 (+12/-0)
percona-xtradb-cluster-tests/conf/conf21.cnf-node2 (+11/-0)
percona-xtradb-cluster-tests/t/xb_galera_sst_dirs.sh (+10/-4)
percona-xtradb-cluster-tests/t/xb_galera_sst_encrypted.sh (+6/-2)
plugin/audit_log/CMakeLists.txt (+17/-0)
plugin/audit_log/audit_log.c (+815/-0)
plugin/audit_log/buffer.c (+196/-0)
plugin/audit_log/buffer.h (+32/-0)
plugin/audit_log/file_logger.c (+338/-0)
plugin/audit_log/logger.h (+85/-0)
plugin/percona-pam-for-mysql/configure.ac (+1/-1)
plugin/percona-pam-for-mysql/doc/source/intro.rst (+1/-1)
plugin/percona-pam-for-mysql/doc/source/manual.rst (+7/-0)
plugin/percona-pam-for-mysql/doc/source/release-notes.rst (+12/-1)
plugin/percona-pam-for-mysql/src/auth_pam_compat.c (+1/-1)
plugin/percona-pam-for-mysql/test/dbqp/percona_tests/percona_pam/pam_mapping_test.py (+118/-0)
plugin/scalability_metrics/CMakeLists.txt (+17/-0)
plugin/scalability_metrics/scalability_metrics.c (+451/-0)
plugin/semisync/semisync.cc (+1/-0)
plugin/semisync/semisync.h (+1/-0)
plugin/semisync/semisync_master.cc (+15/-16)
plugin/semisync/semisync_slave_plugin.cc (+1/-0)
policy/apparmor/usr.sbin.mysqld (+116/-0)
policy/apparmor/usr.sbin.mysqld.local (+2/-0)
policy/selinux/percona-xtradb-cluster.fc (+7/-0)
policy/selinux/percona-xtradb-cluster.te (+73/-0)
python-for-subunit2junitxml/BytesIO.py (+136/-0)
python-for-subunit2junitxml/iso8601/LICENSE (+20/-0)
python-for-subunit2junitxml/iso8601/README (+26/-0)
python-for-subunit2junitxml/iso8601/README.subunit (+5/-0)
python-for-subunit2junitxml/iso8601/setup.py (+58/-0)
python-for-subunit2junitxml/iso8601/test_iso8601.py (+111/-0)
python-for-subunit2junitxml/junitxml/__init__.py (+221/-0)
python-for-subunit2junitxml/junitxml/tests/__init__.py (+16/-0)
python-for-subunit2junitxml/junitxml/tests/test_junitxml.py (+327/-0)
python-for-subunit2junitxml/subunit/__init__.py (+1250/-0)
python-for-subunit2junitxml/subunit/chunked.py (+185/-0)
python-for-subunit2junitxml/subunit/details.py (+119/-0)
python-for-subunit2junitxml/subunit/iso8601.py (+133/-0)
python-for-subunit2junitxml/subunit/progress_model.py (+106/-0)
python-for-subunit2junitxml/subunit/run.py (+73/-0)
python-for-subunit2junitxml/subunit/test_results.py (+492/-0)
python-for-subunit2junitxml/subunit/tests/TestUtil.py (+80/-0)
python-for-subunit2junitxml/subunit/tests/__init__.py (+41/-0)
python-for-subunit2junitxml/subunit/tests/sample-script.py (+21/-0)
python-for-subunit2junitxml/subunit/tests/sample-two-script.py (+7/-0)
python-for-subunit2junitxml/subunit/tests/test_chunked.py (+152/-0)
python-for-subunit2junitxml/subunit/tests/test_details.py (+112/-0)
python-for-subunit2junitxml/subunit/tests/test_progress_model.py (+118/-0)
python-for-subunit2junitxml/subunit/tests/test_subunit_filter.py (+208/-0)
python-for-subunit2junitxml/subunit/tests/test_subunit_stats.py (+84/-0)
python-for-subunit2junitxml/subunit/tests/test_subunit_tags.py (+69/-0)
python-for-subunit2junitxml/subunit/tests/test_tap2subunit.py (+445/-0)
python-for-subunit2junitxml/subunit/tests/test_test_protocol.py (+1299/-0)
python-for-subunit2junitxml/subunit/tests/test_test_results.py (+300/-0)
python-for-subunit2junitxml/testtools/__init__.py (+80/-0)
python-for-subunit2junitxml/testtools/_spinner.py (+316/-0)
python-for-subunit2junitxml/testtools/compat.py (+286/-0)
python-for-subunit2junitxml/testtools/content.py (+238/-0)
python-for-subunit2junitxml/testtools/content_type.py (+33/-0)
python-for-subunit2junitxml/testtools/deferredruntest.py (+335/-0)
python-for-subunit2junitxml/testtools/distutilscmd.py (+62/-0)
python-for-subunit2junitxml/testtools/helpers.py (+64/-0)
python-for-subunit2junitxml/testtools/matchers.py (+785/-0)
python-for-subunit2junitxml/testtools/monkey.py (+97/-0)
python-for-subunit2junitxml/testtools/run.py (+332/-0)
python-for-subunit2junitxml/testtools/runtest.py (+200/-0)
python-for-subunit2junitxml/testtools/testcase.py (+724/-0)
python-for-subunit2junitxml/testtools/testresult/__init__.py (+19/-0)
python-for-subunit2junitxml/testtools/testresult/doubles.py (+111/-0)
python-for-subunit2junitxml/testtools/testresult/real.py (+621/-0)
python-for-subunit2junitxml/testtools/tests/__init__.py (+44/-0)
python-for-subunit2junitxml/testtools/tests/helpers.py (+72/-0)
python-for-subunit2junitxml/testtools/tests/test_compat.py (+257/-0)
python-for-subunit2junitxml/testtools/tests/test_content.py (+223/-0)
python-for-subunit2junitxml/testtools/tests/test_content_type.py (+46/-0)
python-for-subunit2junitxml/testtools/tests/test_deferredruntest.py (+738/-0)
python-for-subunit2junitxml/testtools/tests/test_distutilscmd.py (+90/-0)
python-for-subunit2junitxml/testtools/tests/test_fixturesupport.py (+79/-0)
python-for-subunit2junitxml/testtools/tests/test_helpers.py (+106/-0)
python-for-subunit2junitxml/testtools/tests/test_matchers.py (+695/-0)
python-for-subunit2junitxml/testtools/tests/test_monkey.py (+167/-0)
python-for-subunit2junitxml/testtools/tests/test_run.py (+77/-0)
python-for-subunit2junitxml/testtools/tests/test_runtest.py (+300/-0)
python-for-subunit2junitxml/testtools/tests/test_spinner.py (+332/-0)
python-for-subunit2junitxml/testtools/tests/test_testresult.py (+1372/-0)
python-for-subunit2junitxml/testtools/tests/test_testsuite.py (+53/-0)
python-for-subunit2junitxml/testtools/tests/test_testtools.py (+1143/-0)
python-for-subunit2junitxml/testtools/tests/test_with_with.py (+42/-0)
python-for-subunit2junitxml/testtools/testsuite.py (+87/-0)
python-for-subunit2junitxml/testtools/utils.py (+13/-0)
scripts/CMakeLists.txt (+9/-2)
scripts/clustercheck.sh (+28/-3)
scripts/comp_sql.c (+2/-1)
scripts/msql2mysql.sh (+1/-0)
scripts/mysql_config.pl.in (+2/-2)
scripts/mysql_config.sh (+3/-3)
scripts/mysql_install_db.pl.in (+19/-16)
scripts/mysql_install_db.sh (+9/-8)
scripts/mysql_system_tables.sql (+1/-1)
scripts/mysql_system_tables_data.sql (+2/-3)
scripts/mysql_system_tables_fix.sql (+3/-1)
scripts/mysql_test_data_timezone.sql (+1/-0)
scripts/mysqlaccess.sh (+3/-4)
scripts/mysqlbug.sh (+1/-0)
scripts/mysqlchk.sh (+8/-1)
scripts/mysqld_safe.sh (+2/-2)
scripts/wsrep_sst_common.sh (+5/-5)
scripts/wsrep_sst_mysqldump.sh (+9/-4)
scripts/wsrep_sst_rsync.sh (+41/-24)
scripts/wsrep_sst_xtrabackup-v2.sh (+128/-30)
scripts/wsrep_sst_xtrabackup.sh (+11/-1)
sql-common/client.c (+7/-0)
sql-common/pack.c (+2/-1)
sql/CMakeLists.txt (+1/-1)
sql/custom_conf.h (+2/-1)
sql/event_scheduler.cc (+1/-1)
sql/event_scheduler.h (+1/-1)
sql/events.cc (+1/-1)
sql/events.h (+1/-1)
sql/field.h (+1/-13)
sql/filesort.cc (+45/-19)
sql/ha_ndbcluster_cond.cc (+1/-1)
sql/ha_ndbcluster_cond.h (+1/-1)
sql/ha_ndbcluster_tables.h (+2/-1)
sql/ha_partition.cc (+51/-15)
sql/ha_partition.h (+5/-1)
sql/handler.cc (+34/-6)
sql/hostname.cc (+1/-1)
sql/item_cmpfunc.h (+1/-1)
sql/item_func.cc (+2/-0)
sql/item_func.h (+1/-1)
sql/item_strfunc.cc (+27/-5)
sql/item_sum.cc (+47/-20)
sql/item_sum.h (+25/-20)
sql/item_xmlfunc.cc (+4/-1)
sql/key.cc (+1/-1)
sql/key.h (+1/-1)
sql/lex_symbol.h (+2/-1)
sql/lock.cc (+2/-3)
sql/log.cc (+152/-34)
sql/log.h (+11/-5)
sql/log_event.cc (+256/-70)
sql/log_event.h (+33/-18)
sql/log_event_old.cc (+15/-24)
sql/log_event_old.h (+5/-7)
sql/mdl.cc (+4/-4)
sql/mem_root_array.h (+1/-1)
sql/my_decimal.h (+1/-1)
sql/mysqld.cc (+33/-69)
sql/mysqld.h (+5/-16)
sql/net_serv.cc (+7/-1)
sql/opt_range.cc (+10/-9)
sql/partition_element.h (+1/-1)
sql/partition_info.h (+1/-1)
sql/rpl_filter.cc (+1/-1)
sql/rpl_record.cc (+22/-5)
sql/rpl_record.h (+3/-2)
sql/rpl_tblmap.cc (+11/-11)
sql/rpl_tblmap.h (+6/-6)
sql/rpl_utility.cc (+3/-16)
sql/set_var.cc (+2/-2)
sql/set_var.h (+3/-2)
sql/share/charsets/Index.xml (+2/-1)
sql/share/charsets/armscii8.xml (+2/-1)
sql/share/charsets/ascii.xml (+2/-1)
sql/share/charsets/cp1250.xml (+2/-1)
sql/share/charsets/cp1256.xml (+1/-0)
sql/share/charsets/cp1257.xml (+1/-0)
sql/share/charsets/cp850.xml (+1/-0)
sql/share/charsets/cp852.xml (+2/-1)
sql/share/charsets/cp866.xml (+1/-0)
sql/share/charsets/dec8.xml (+1/-0)
sql/share/charsets/geostd8.xml (+1/-0)
sql/share/charsets/greek.xml (+1/-0)
sql/share/charsets/hebrew.xml (+2/-1)
sql/share/charsets/hp8.xml (+1/-0)
sql/share/charsets/keybcs2.xml (+1/-0)
sql/share/charsets/koi8r.xml (+1/-0)
sql/share/charsets/koi8u.xml (+1/-0)
sql/share/charsets/languages.html (+1/-0)
sql/share/charsets/latin1.xml (+2/-1)
sql/share/charsets/latin2.xml (+2/-1)
sql/share/charsets/latin5.xml (+2/-1)
sql/share/charsets/latin7.xml (+1/-0)
sql/share/charsets/macce.xml (+1/-0)
sql/share/charsets/macroman.xml (+1/-0)
sql/share/charsets/swe7.xml (+1/-0)
sql/signal_handler.cc (+1/-1)
sql/slave.cc (+72/-12)
sql/sql_acl.cc (+11/-3)
sql/sql_admin.h (+1/-1)
sql/sql_analyse.cc (+1/-1)
sql/sql_audit.cc (+1/-1)
sql/sql_audit.h (+13/-5)
sql/sql_base.cc (+12/-16)
sql/sql_binlog.cc (+1/-1)
sql/sql_bitmap.h (+1/-1)
sql/sql_class.cc (+4/-1)
sql/sql_class.h (+10/-2)
sql/sql_connect.cc (+82/-98)
sql/sql_help.cc (+1/-1)
sql/sql_lex.cc (+1/-0)
sql/sql_lex.h (+1/-1)
sql/sql_manager.cc (+1/-1)
sql/sql_parse.cc (+21/-15)
sql/sql_partition.cc (+2/-0)
sql/sql_partition_admin.cc (+14/-1)
sql/sql_plugin.cc (+1/-1)
sql/sql_prepare.cc (+1/-1)
sql/sql_repl.cc (+1/-1)
sql/sql_state.c (+1/-0)
sql/sql_string.cc (+1/-1)
sql/sql_trigger.cc (+8/-1)
sql/sql_view.cc (+1/-1)
sql/sql_yacc.cc (+38921/-0)
sql/sql_yacc.h (+1311/-0)
sql/sql_yacc.yy (+8/-1)
sql/strfunc.cc (+1/-1)
sql/structs.h (+4/-0)
sql/sys_vars.cc (+86/-11)
sql/table.cc (+3/-3)
sql/table.h (+10/-9)
sql/table_id.h (+61/-0)
sql/threadpool.h (+9/-5)
sql/threadpool_common.cc (+7/-4)
sql/threadpool_unix.cc (+114/-32)
sql/transaction.h (+1/-2)
sql/wsrep_applier.cc (+1/-0)
sql/wsrep_binlog.cc (+60/-3)
sql/wsrep_binlog.h (+3/-0)
sql/wsrep_check_opts.cc (+0/-13)
sql/wsrep_hton.cc (+19/-15)
sql/wsrep_mysqld.cc (+60/-13)
sql/wsrep_mysqld.h (+7/-3)
sql/wsrep_notify.cc (+11/-8)
sql/wsrep_sst.cc (+19/-6)
sql/wsrep_thd.cc (+45/-21)
sql/wsrep_thd.h (+3/-1)
sql/wsrep_var.cc (+24/-2)
storage/HandlerSocket-Plugin-for-MySQL/Makefile.in (+850/-0)
storage/HandlerSocket-Plugin-for-MySQL/aclocal.m4 (+9620/-0)
storage/HandlerSocket-Plugin-for-MySQL/ar-lib (+270/-0)
storage/HandlerSocket-Plugin-for-MySQL/autom4te.cache/output.0 (+18574/-0)
storage/HandlerSocket-Plugin-for-MySQL/autom4te.cache/output.1 (+18570/-0)
storage/HandlerSocket-Plugin-for-MySQL/autom4te.cache/requests (+294/-0)
storage/HandlerSocket-Plugin-for-MySQL/autom4te.cache/traces.0 (+2642/-0)
storage/HandlerSocket-Plugin-for-MySQL/autom4te.cache/traces.1 (+621/-0)
storage/HandlerSocket-Plugin-for-MySQL/client/Makefile.in (+583/-0)
storage/HandlerSocket-Plugin-for-MySQL/config.guess (+1530/-0)
storage/HandlerSocket-Plugin-for-MySQL/config.h.in (+62/-0)
storage/HandlerSocket-Plugin-for-MySQL/config.sub (+1782/-0)
storage/HandlerSocket-Plugin-for-MySQL/configure (+18570/-0)
storage/HandlerSocket-Plugin-for-MySQL/configure.ac (+2/-2)
storage/HandlerSocket-Plugin-for-MySQL/depcomp (+708/-0)
storage/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.in (+610/-0)
storage/HandlerSocket-Plugin-for-MySQL/install-sh (+527/-0)
storage/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.in (+649/-0)
storage/HandlerSocket-Plugin-for-MySQL/ltmain.sh (+9661/-0)
storage/HandlerSocket-Plugin-for-MySQL/m4/libtool.m4 (+7983/-0)
storage/HandlerSocket-Plugin-for-MySQL/m4/ltoptions.m4 (+384/-0)
storage/HandlerSocket-Plugin-for-MySQL/m4/ltsugar.m4 (+123/-0)
storage/HandlerSocket-Plugin-for-MySQL/m4/ltversion.m4 (+23/-0)
storage/HandlerSocket-Plugin-for-MySQL/m4/lt~obsolete.m4 (+98/-0)
storage/HandlerSocket-Plugin-for-MySQL/missing (+331/-0)
storage/archive/archive_test.c (+1/-0)
storage/example/ha_example.cc (+1/-1)
storage/federated/ha_federated.cc (+57/-52)
storage/federated/ha_federated.h (+11/-17)
storage/heap/_check.c (+2/-1)
storage/heap/_rectest.c (+2/-1)
storage/heap/hp_delete.c (+1/-1)
storage/heap/hp_extra.c (+2/-1)
storage/heap/hp_rfirst.c (+2/-1)
storage/heap/hp_rlast.c (+2/-1)
storage/heap/hp_rnext.c (+2/-1)
storage/heap/hp_rprev.c (+2/-1)
storage/heap/hp_rrnd.c (+2/-1)
storage/heap/hp_rsame.c (+2/-1)
storage/heap/hp_scan.c (+2/-1)
storage/heap/hp_update.c (+2/-1)
storage/innobase/btr/btr0cur.c (+22/-9)
storage/innobase/btr/btr0pcur.c (+19/-27)
storage/innobase/buf/buf0buf.c (+3/-1)
storage/innobase/buf/buf0flu.c (+6/-13)
storage/innobase/dict/dict0dict.c (+108/-36)
storage/innobase/dict/dict0mem.c (+1/-0)
storage/innobase/fil/fil0fil.c (+18/-7)
storage/innobase/handler/ha_innodb.cc (+99/-56)
storage/innobase/handler/ha_innodb.h (+1/-0)
storage/innobase/handler/handler0alter.cc (+2/-2)
storage/innobase/ibuf/ibuf0ibuf.c (+24/-5)
storage/innobase/include/btr0cur.h (+15/-0)
storage/innobase/include/btr0pcur.h (+24/-20)
storage/innobase/include/btr0pcur.ic (+2/-2)
storage/innobase/include/btr0sea.h (+0/-2)
storage/innobase/include/dict0types.h (+5/-0)
storage/innobase/include/ha_prototypes.h (+2/-1)
storage/innobase/include/ibuf0ibuf.h (+0/-5)
storage/innobase/include/lock0lock.h (+10/-1)
storage/innobase/include/lock0lock.ic (+14/-0)
storage/innobase/include/log0log.h (+2/-0)
storage/innobase/include/univ.i (+1/-1)
storage/innobase/lock/lock0lock.c (+97/-54)
storage/innobase/log/log0log.c (+109/-1)
storage/innobase/log/log0online.c (+16/-3)
storage/innobase/os/os0file.c (+45/-5)
storage/innobase/row/row0ins.c (+9/-23)
storage/innobase/row/row0sel.c (+78/-31)
storage/innobase/row/row0upd.c (+12/-35)
storage/innobase/srv/srv0srv.c (+3/-3)
storage/innobase/srv/srv0start.c (+5/-1)
storage/innobase/trx/trx0i_s.c (+5/-4)
storage/innobase/trx/trx0sys.c (+0/-7)
storage/myisam/ft_stopwords.c (+1/-1)
storage/myisam/ftbench/Ecompare.pl (+2/-1)
storage/myisam/ftbench/Ecreate.pl (+2/-1)
storage/myisam/ftbench/Ereport.pl (+2/-1)
storage/myisam/ftbench/ft-test-run.sh (+3/-2)
storage/myisam/mi_check.c (+1/-1)
storage/myisam/mi_checksum.c (+1/-1)
storage/myisam/mi_rfirst.c (+2/-1)
storage/myisam/mi_rlast.c (+2/-1)
storage/myisam/mi_rrnd.c (+2/-1)
storage/myisam/mi_rsamepos.c (+2/-1)
storage/myisam/mi_scan.c (+2/-1)
storage/myisam/mi_test_all.sh (+1/-0)
storage/myisam/mi_write.c (+1/-1)
storage/myisam/myisampack.c (+1/-1)
storage/myisam/rt_index.h (+2/-1)
storage/myisam/rt_key.c (+2/-1)
storage/myisam/rt_key.h (+2/-1)
storage/myisam/rt_mbr.c (+2/-1)
storage/myisam/rt_mbr.h (+2/-1)
storage/myisam/sp_defs.h (+2/-1)
storage/myisammrg/ha_myisammrg.cc (+4/-4)
storage/myisammrg/ha_myisammrg.h (+5/-5)
storage/myisammrg/myrg_delete.c (+2/-1)
storage/myisammrg/myrg_locking.c (+2/-1)
storage/myisammrg/myrg_panic.c (+2/-1)
storage/myisammrg/myrg_range.c (+2/-1)
storage/myisammrg/myrg_records.c (+1/-0)
storage/myisammrg/myrg_rfirst.c (+2/-1)
storage/myisammrg/myrg_rlast.c (+2/-1)
storage/myisammrg/myrg_rnext.c (+2/-1)
storage/myisammrg/myrg_rnext_same.c (+2/-1)
storage/myisammrg/myrg_rprev.c (+2/-1)
storage/myisammrg/myrg_rrnd.c (+2/-1)
storage/myisammrg/myrg_rsame.c (+2/-1)
storage/myisammrg/myrg_update.c (+2/-1)
storage/myisammrg/myrg_write.c (+2/-1)
storage/ndb/Makefile.am (+1/-0)
storage/ndb/config/common.mk.am (+1/-0)
storage/ndb/config/make-win-dsw.sh (+1/-0)
storage/ndb/config/type_kernel.mk.am (+1/-0)
storage/ndb/config/type_mgmapiclient.mk.am (+1/-0)
storage/ndb/config/type_ndbapi.mk.am (+1/-0)
storage/ndb/config/type_ndbapiclient.mk.am (+1/-0)
storage/ndb/config/type_ndbapitest.mk.am (+1/-0)
storage/ndb/config/type_ndbapitools.mk.am (+1/-0)
storage/ndb/config/type_util.mk.am (+1/-0)
storage/ndb/config/win-includes (+2/-1)
storage/ndb/config/win-libraries (+2/-1)
storage/ndb/config/win-name (+2/-1)
storage/ndb/config/win-sources (+2/-1)
storage/ndb/docs/Makefile.am (+1/-0)
storage/ndb/docs/doxygen/Doxyfile.mgmapi (+1/-0)
storage/ndb/docs/doxygen/Doxyfile.ndb (+1/-0)
storage/ndb/docs/doxygen/Doxyfile.ndbapi (+1/-0)
storage/ndb/docs/doxygen/Doxyfile.odbc (+1/-0)
storage/ndb/docs/doxygen/postdoxy.pl (+1/-0)
storage/ndb/docs/doxygen/predoxy.pl (+1/-0)
storage/ndb/include/Makefile.am (+1/-0)
storage/ndb/include/debugger/DebuggerNames.hpp (+2/-1)
storage/ndb/include/debugger/EventLogger.hpp (+2/-1)
storage/ndb/include/debugger/GrepError.hpp (+2/-1)
storage/ndb/include/debugger/SignalLoggerManager.hpp (+2/-1)
storage/ndb/include/editline/editline.h (+2/-1)
storage/ndb/include/kernel/AttributeDescriptor.hpp (+2/-1)
storage/ndb/include/kernel/AttributeHeader.hpp (+2/-1)
storage/ndb/include/kernel/AttributeList.hpp (+2/-1)
storage/ndb/include/kernel/BlockNumbers.h (+2/-1)
storage/ndb/include/kernel/GlobalSignalNumbers.h (+2/-1)
storage/ndb/include/kernel/GrepEvent.hpp (+2/-1)
storage/ndb/include/kernel/Interpreter.hpp (+2/-1)
storage/ndb/include/kernel/LogLevel.hpp (+2/-1)
storage/ndb/include/kernel/NodeBitmask.hpp (+2/-1)
storage/ndb/include/kernel/NodeInfo.hpp (+2/-1)
storage/ndb/include/kernel/NodeState.hpp (+2/-1)
storage/ndb/include/kernel/RefConvert.hpp (+2/-1)
storage/ndb/include/kernel/kernel_config_parameters.h (+1/-0)
storage/ndb/include/kernel/kernel_types.h (+2/-1)
storage/ndb/include/kernel/ndb_limits.h (+2/-1)
storage/ndb/include/kernel/signaldata/AbortAll.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AccFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AccLock.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AccScan.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AccSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AllocNodeId.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AlterIndx.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AlterTab.hpp (+2/-2)
storage/ndb/include/kernel/signaldata/AlterTable.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AlterTrig.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ApiBroadcast.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ApiRegSignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ApiVersion.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ArbitSignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/AttrInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/BackupContinueB.hpp (+2/-2)
storage/ndb/include/kernel/signaldata/BackupImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/BackupSignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/BlockCommitOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/BuildIndx.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CheckNodeGroups.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CloseComReqConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CmInit.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CmRegSignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CmvmiCfgConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CntrMasterConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CntrMasterReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CntrStart.hpp (+1/-0)
storage/ndb/include/kernel/signaldata/ConfigParamId.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ContinueFragmented.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CopyActive.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CopyFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CopyGCIReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateEvnt.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateFilegroup.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateFilegroupImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateFragmentation.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateIndx.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateObj.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateTable.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/CreateTrig.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DiAddTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DiGetNodes.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictLock.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictObjOp.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictSchemaInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictStart.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DictTabInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DihAddFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DihContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DihFragCount.hpp (+1/-0)
storage/ndb/include/kernel/signaldata/DihSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DihStartTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DihSwitchReplica.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DisconnectRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropFilegroup.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropFilegroupImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropIndx.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropObj.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropTabFile.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropTable.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DropTrig.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/DumpStateOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/EmptyLcp.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/EndTo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/EventReport.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/EventSubscribeReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ExecFragReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/Extent.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FailRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FireTrigOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsAppendReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsCloseReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsOpenReq.hpp (+1/-1)
storage/ndb/include/kernel/signaldata/FsReadWriteReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsRef.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/FsRemoveReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/GCPSave.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/GetTabInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/GetTableId.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/GrepImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/HotSpareRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/IndxAttrInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/IndxKeyInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/InvalidateNodeLCPConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/InvalidateNodeLCPReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/KeyInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LCP.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LgmanContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ListTables.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LqhFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LqhKey.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LqhSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/LqhTransConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ManagementServer.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/MasterGCP.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/MasterLCP.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NFCompleteRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NdbSttor.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NdbfsContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NextScan.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NodeFailRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/NodeStateSignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/PackedSignal.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/PgmanContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/PrepDropTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/PrepFailReqRef.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ReadConfig.hpp (+1/-0)
storage/ndb/include/kernel/signaldata/ReadNodesConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/RelTabMem.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/RepImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/RestoreContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/RestoreImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ResumeReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/RouteOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ScanFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/ScanTab.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SetLogLevelOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SetVarReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SignalData.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SignalDataPrint.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SignalDroppedRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SrFragidConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartFragReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartMe.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartPerm.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartRec.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StartTo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StopMe.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StopPerm.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/StopReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SumaImpl.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/SystemError.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TamperOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcCommit.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcHbRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcIndx.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcKeyConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcKeyFailConf.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcKeyRef.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcKeyReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcRollbackRep.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TcSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TestOrd.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TransIdAI.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TrigAttrInfo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TsmanContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TupCommit.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TupFrag.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TupKey.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TupSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TuxBound.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TuxContinueB.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TuxMaint.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/TuxSizeAltReq.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UpdateTo.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UpgradeStartup.hpp (+1/-0)
storage/ndb/include/kernel/signaldata/UtilDelete.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UtilExecute.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UtilLock.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UtilPrepare.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UtilRelease.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/UtilSequence.hpp (+2/-1)
storage/ndb/include/kernel/signaldata/WaitGCP.hpp (+2/-1)
storage/ndb/include/kernel/trigger_definitions.h (+2/-1)
storage/ndb/include/logger/ConsoleLogHandler.hpp (+2/-1)
storage/ndb/include/logger/FileLogHandler.hpp (+2/-1)
storage/ndb/include/logger/LogHandler.hpp (+2/-1)
storage/ndb/include/logger/Logger.hpp (+2/-1)
storage/ndb/include/logger/SysLogHandler.hpp (+2/-1)
storage/ndb/include/mgmapi/mgmapi.h (+2/-1)
storage/ndb/include/mgmapi/mgmapi_config_parameters.h (+1/-0)
storage/ndb/include/mgmapi/mgmapi_config_parameters_debug.h (+1/-0)
storage/ndb/include/mgmapi/mgmapi_debug.h (+2/-1)
storage/ndb/include/mgmapi/mgmapi_error.h (+2/-1)
storage/ndb/include/mgmapi/ndb_logevent.h (+2/-1)
storage/ndb/include/mgmapi/ndbd_exit_codes.h (+2/-1)
storage/ndb/include/mgmcommon/ConfigRetriever.hpp (+2/-1)
storage/ndb/include/mgmcommon/IPCConfig.hpp (+2/-1)
storage/ndb/include/mgmcommon/MgmtErrorReporter.hpp (+2/-1)
storage/ndb/include/ndb_constants.h (+2/-1)
storage/ndb/include/ndb_global.h.in (+2/-1)
storage/ndb/include/ndb_init.h (+2/-1)
storage/ndb/include/ndb_net.h (+1/-0)
storage/ndb/include/ndb_types.h.in (+2/-1)
storage/ndb/include/ndb_version.h.in (+2/-1)
storage/ndb/include/ndbapi/Ndb.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbApi.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbBlob.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbDictionary.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbError.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbEventOperation.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbIndexOperation.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbIndexScanOperation.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbIndexStat.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbOperation.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbPool.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbRecAttr.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbReceiver.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbScanFilter.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbScanOperation.hpp (+2/-1)
storage/ndb/include/ndbapi/NdbTransaction.hpp (+2/-1)
storage/ndb/include/ndbapi/ndb_cluster_connection.hpp (+2/-1)
storage/ndb/include/ndbapi/ndb_opt_defaults.h (+2/-1)
storage/ndb/include/ndbapi/ndbapi_limits.h (+2/-1)
storage/ndb/include/ndbapi/ndberror.h (+2/-1)
storage/ndb/include/newtonapi/dba.h (+2/-1)
storage/ndb/include/newtonapi/defs/pcn_types.h (+2/-1)
storage/ndb/include/portlib/NdbCondition.h (+2/-1)
storage/ndb/include/portlib/NdbConfig.h (+2/-1)
storage/ndb/include/portlib/NdbDaemon.h (+2/-1)
storage/ndb/include/portlib/NdbEnv.h (+2/-1)
storage/ndb/include/portlib/NdbHost.h (+2/-1)
storage/ndb/include/portlib/NdbMain.h (+2/-1)
storage/ndb/include/portlib/NdbMem.h (+2/-1)
storage/ndb/include/portlib/NdbMutex.h (+2/-1)
storage/ndb/include/portlib/NdbSleep.h (+2/-1)
storage/ndb/include/portlib/NdbTCP.h (+2/-1)
storage/ndb/include/portlib/NdbThread.h (+2/-1)
storage/ndb/include/portlib/NdbTick.h (+2/-1)
storage/ndb/include/portlib/PortDefs.h (+2/-1)
storage/ndb/include/portlib/prefetch.h (+2/-1)
storage/ndb/include/transporter/TransporterCallback.hpp (+2/-1)
storage/ndb/include/transporter/TransporterDefinitions.hpp (+2/-1)
storage/ndb/include/transporter/TransporterRegistry.hpp (+2/-1)
storage/ndb/include/util/BaseString.hpp (+2/-1)
storage/ndb/include/util/Bitmask.hpp (+2/-1)
storage/ndb/include/util/ConfigValues.hpp (+1/-0)
storage/ndb/include/util/File.hpp (+2/-1)
storage/ndb/include/util/InputStream.hpp (+2/-1)
storage/ndb/include/util/NdbAutoPtr.hpp (+1/-1)
storage/ndb/include/util/NdbOut.hpp (+2/-1)
storage/ndb/include/util/NdbSqlUtil.hpp (+2/-1)
storage/ndb/include/util/OutputStream.hpp (+2/-1)
storage/ndb/include/util/Parser.hpp (+2/-1)
storage/ndb/include/util/Properties.hpp (+2/-1)
storage/ndb/include/util/SimpleProperties.hpp (+2/-1)
storage/ndb/include/util/SocketAuthenticator.hpp (+2/-1)
storage/ndb/include/util/SocketClient.hpp (+2/-1)
storage/ndb/include/util/SocketServer.hpp (+2/-1)
storage/ndb/include/util/UtilBuffer.hpp (+2/-1)
storage/ndb/include/util/Vector.hpp (+2/-1)
storage/ndb/include/util/basestring_vsnprintf.h (+2/-1)
storage/ndb/include/util/md5_hash.hpp (+2/-1)
storage/ndb/include/util/ndb_opts.h (+1/-1)
storage/ndb/include/util/ndb_rand.h (+2/-1)
storage/ndb/include/util/random.h (+2/-1)
storage/ndb/include/util/socket_io.h (+2/-1)
storage/ndb/include/util/uucode.h (+2/-1)
storage/ndb/include/util/version.h (+2/-1)
storage/ndb/ndbapi-examples/mgmapi_logevent/main.cpp (+2/-1)
storage/ndb/ndbapi-examples/mgmapi_logevent2/main.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_async/ndbapi_async.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_async1/ndbapi_async1.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_event/ndbapi_event.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_retries/ndbapi_retries.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_scan/ndbapi_scan.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_simple/ndbapi_simple.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_simple_dual/main.cpp (+2/-1)
storage/ndb/ndbapi-examples/ndbapi_simple_index/main.cpp (+2/-1)
storage/ndb/src/Makefile.am (+1/-0)
storage/ndb/src/common/Makefile.am (+1/-0)
storage/ndb/src/common/debugger/BlockNames.cpp (+2/-1)
storage/ndb/src/common/debugger/DebuggerNames.cpp (+2/-1)
storage/ndb/src/common/debugger/EventLogger.cpp (+2/-1)
storage/ndb/src/common/debugger/GrepError.cpp (+2/-1)
storage/ndb/src/common/debugger/Makefile.am (+1/-0)
storage/ndb/src/common/debugger/SignalLoggerManager.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/AccLock.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/AlterIndx.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/AlterTab.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/AlterTable.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/AlterTrig.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/BackupImpl.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/BackupSignalData.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CloseComReqConf.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CntrStart.cpp (+1/-0)
storage/ndb/src/common/debugger/signaldata/ContinueB.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CopyGCI.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CreateEvnt.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CreateFragmentation.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CreateIndx.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/CreateTrig.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DictTabInfo.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DihContinueB.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DihSwitchReplicaReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DisconnectRep.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DropIndx.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DropTab.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/DropTrig.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FailRep.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FireTrigOrd.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsAppendReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsCloseReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsConf.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsOpenReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsReadWriteReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/FsRef.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/GCPSave.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/IndxAttrInfo.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/IndxKeyInfo.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/LCP.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/LqhFrag.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/LqhKey.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/LqhTrans.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/Makefile.am (+1/-0)
storage/ndb/src/common/debugger/signaldata/MasterLCP.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/NFCompleteRep.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/NdbSttor.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/NdbfsContinueB.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/PackedSignal.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/PrepDropTab.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/PrepFailReqRef.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/ReadNodesConf.cpp (+1/-0)
storage/ndb/src/common/debugger/signaldata/ScanFrag.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/ScanTab.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/SignalDataPrint.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/SignalDroppedRep.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/SignalNames.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/StartRec.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/SumaImpl.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/SystemError.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TcIndx.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TcKeyConf.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TcKeyRef.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TcKeyReq.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TcRollbackRep.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TrigAttrInfo.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TupCommit.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TupKey.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/TuxMaint.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/UtilDelete.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/UtilExecute.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/UtilLock.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/UtilPrepare.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/UtilSequence.cpp (+2/-1)
storage/ndb/src/common/debugger/signaldata/print.awk (+1/-0)
storage/ndb/src/common/logger/ConsoleLogHandler.cpp (+2/-1)
storage/ndb/src/common/logger/FileLogHandler.cpp (+2/-1)
storage/ndb/src/common/logger/LogHandler.cpp (+2/-1)
storage/ndb/src/common/logger/LogHandlerList.cpp (+2/-1)
storage/ndb/src/common/logger/LogHandlerList.hpp (+2/-1)
storage/ndb/src/common/logger/Logger.cpp (+2/-1)
storage/ndb/src/common/logger/Makefile.am (+1/-0)
storage/ndb/src/common/logger/SysLogHandler.cpp (+2/-1)
storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.cpp (+2/-1)
storage/ndb/src/common/logger/listtest/LogHandlerListUnitTest.hpp (+2/-1)
storage/ndb/src/common/logger/loggertest/LoggerUnitTest.cpp (+2/-1)
storage/ndb/src/common/logger/loggertest/LoggerUnitTest.hpp (+2/-1)
storage/ndb/src/common/mgmcommon/ConfigRetriever.cpp (+2/-1)
storage/ndb/src/common/mgmcommon/IPCConfig.cpp (+2/-1)
storage/ndb/src/common/mgmcommon/Makefile.am (+1/-0)
storage/ndb/src/common/mgmcommon/printConfig/printConfig.cpp (+2/-1)
storage/ndb/src/common/portlib/Makefile.am (+1/-0)
storage/ndb/src/common/portlib/NdbCondition.c (+2/-1)
storage/ndb/src/common/portlib/NdbConfig.c (+2/-1)
storage/ndb/src/common/portlib/NdbDaemon.c (+2/-1)
storage/ndb/src/common/portlib/NdbEnv.c (+2/-1)
storage/ndb/src/common/portlib/NdbHost.c (+2/-1)
storage/ndb/src/common/portlib/NdbMem.c (+2/-1)
storage/ndb/src/common/portlib/NdbMutex.c (+1/-1)
storage/ndb/src/common/portlib/NdbPortLibTest.cpp (+2/-1)
storage/ndb/src/common/portlib/NdbSleep.c (+2/-1)
storage/ndb/src/common/portlib/NdbTCP.cpp (+2/-1)
storage/ndb/src/common/portlib/NdbThread.c (+2/-1)
storage/ndb/src/common/portlib/NdbTick.c (+2/-1)
storage/ndb/src/common/portlib/memtest.c (+2/-1)
storage/ndb/src/common/portlib/mmstest.cpp (+2/-1)
storage/ndb/src/common/portlib/munmaptest.cpp (+2/-1)
storage/ndb/src/common/portlib/win32/NdbCondition.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbDaemon.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbEnv.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbHost.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbMem.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbMutex.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbSleep.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbTCP.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbThread.c (+2/-1)
storage/ndb/src/common/portlib/win32/NdbTick.c (+2/-1)
storage/ndb/src/common/transporter/Makefile.am (+1/-0)
storage/ndb/src/common/transporter/Packer.cpp (+2/-1)
storage/ndb/src/common/transporter/Packer.hpp (+2/-1)
storage/ndb/src/common/transporter/SCI_Transporter.cpp (+2/-1)
storage/ndb/src/common/transporter/SCI_Transporter.hpp (+2/-1)
storage/ndb/src/common/transporter/SHM_Buffer.hpp (+2/-1)
storage/ndb/src/common/transporter/SHM_Transporter.cpp (+2/-1)
storage/ndb/src/common/transporter/SHM_Transporter.hpp (+2/-1)
storage/ndb/src/common/transporter/SHM_Transporter.unix.cpp (+2/-1)
storage/ndb/src/common/transporter/SHM_Transporter.win32.cpp (+2/-1)
storage/ndb/src/common/transporter/SendBuffer.cpp (+2/-1)
storage/ndb/src/common/transporter/SendBuffer.hpp (+2/-1)
storage/ndb/src/common/transporter/TCP_Transporter.cpp (+2/-1)
storage/ndb/src/common/transporter/TCP_Transporter.hpp (+2/-1)
storage/ndb/src/common/transporter/Transporter.cpp (+2/-1)
storage/ndb/src/common/transporter/Transporter.hpp (+2/-1)
storage/ndb/src/common/transporter/TransporterInternalDefinitions.hpp (+2/-1)
storage/ndb/src/common/transporter/TransporterRegistry.cpp (+2/-1)
storage/ndb/src/common/transporter/basictest/basicTransporterTest.cpp (+2/-1)
storage/ndb/src/common/transporter/buddy.cpp (+2/-1)
storage/ndb/src/common/transporter/buddy.hpp (+2/-1)
storage/ndb/src/common/transporter/failoverSCI/failoverSCI.cpp (+2/-1)
storage/ndb/src/common/transporter/perftest/perfTransporterTest.cpp (+2/-1)
storage/ndb/src/common/transporter/priotest/prioSCI/prioSCI.cpp (+2/-1)
storage/ndb/src/common/transporter/priotest/prioSHM/prioSHM.cpp (+2/-1)
storage/ndb/src/common/transporter/priotest/prioTCP/prioTCP.cpp (+2/-1)
storage/ndb/src/common/transporter/priotest/prioTransporterTest.cpp (+2/-1)
storage/ndb/src/common/transporter/priotest/prioTransporterTest.hpp (+2/-1)
storage/ndb/src/common/util/BaseString.cpp (+2/-1)
storage/ndb/src/common/util/Bitmask.cpp (+1/-0)
storage/ndb/src/common/util/ConfigValues.cpp (+1/-0)
storage/ndb/src/common/util/File.cpp (+2/-1)
storage/ndb/src/common/util/InputStream.cpp (+2/-1)
storage/ndb/src/common/util/Makefile.am (+1/-0)
storage/ndb/src/common/util/NdbOut.cpp (+2/-1)
storage/ndb/src/common/util/NdbSqlUtil.cpp (+2/-1)
storage/ndb/src/common/util/OutputStream.cpp (+2/-1)
storage/ndb/src/common/util/Parser.cpp (+2/-1)
storage/ndb/src/common/util/Properties.cpp (+2/-1)
storage/ndb/src/common/util/SimpleProperties.cpp (+2/-1)
storage/ndb/src/common/util/SocketAuthenticator.cpp (+2/-1)
storage/ndb/src/common/util/SocketClient.cpp (+2/-1)
storage/ndb/src/common/util/SocketServer.cpp (+2/-1)
storage/ndb/src/common/util/basestring_vsnprintf.c (+2/-1)
storage/ndb/src/common/util/filetest/FileUnitTest.cpp (+2/-1)
storage/ndb/src/common/util/filetest/FileUnitTest.hpp (+2/-1)
storage/ndb/src/common/util/md5_hash.cpp (+2/-1)
storage/ndb/src/common/util/ndb_init.c (+2/-1)
storage/ndb/src/common/util/ndb_rand.c (+2/-1)
storage/ndb/src/common/util/new.cpp (+1/-0)
storage/ndb/src/common/util/random.c (+2/-1)
storage/ndb/src/common/util/socket_io.cpp (+2/-1)
storage/ndb/src/common/util/strdup.c (+2/-1)
storage/ndb/src/common/util/testConfigValues/testConfigValues.cpp (+1/-0)
storage/ndb/src/common/util/testProperties/testProperties.cpp (+2/-1)
storage/ndb/src/common/util/testSimpleProperties/sp_test.cpp (+2/-1)
storage/ndb/src/common/util/uucode.c (+2/-1)
storage/ndb/src/common/util/version.c (+2/-1)
storage/ndb/src/cw/Makefile.am (+1/-0)
storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.cpp (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/CPC_GUI.h (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/NdbControls.cpp (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/StdAfx.cpp (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/StdAfx.h (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/TreeView.cpp (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/TreeView.h (+2/-1)
storage/ndb/src/cw/cpcc-win32/C++/resource.h (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/CPC_Form.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/Computer.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/ComputerAddDialog.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/ComputerRemoveDialog.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/Database.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/PanelWizard.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/Process.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/ProcessDefineDialog.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/fileaccess/FileMgmt.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/simpleparser/SimpleCPCParser.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/SocketComm.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/socketcomm/myTcpClient.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/startDatabaseDlg.cs (+2/-1)
storage/ndb/src/cw/cpcc-win32/csharp/telnetclient/telnetClient.cs (+2/-1)
storage/ndb/src/cw/cpcd/APIService.cpp (+2/-1)
storage/ndb/src/cw/cpcd/APIService.hpp (+2/-1)
storage/ndb/src/cw/cpcd/CPCD.cpp (+2/-1)
storage/ndb/src/cw/cpcd/CPCD.hpp (+2/-1)
storage/ndb/src/cw/cpcd/Makefile.am (+1/-0)
storage/ndb/src/cw/cpcd/Monitor.cpp (+2/-1)
storage/ndb/src/cw/cpcd/Process.cpp (+2/-1)
storage/ndb/src/cw/cpcd/common.cpp (+2/-1)
storage/ndb/src/cw/cpcd/common.hpp (+2/-1)
storage/ndb/src/cw/cpcd/main.cpp (+1/-1)
storage/ndb/src/cw/test/socketclient/socketClientTest.cpp (+2/-1)
storage/ndb/src/cw/util/ClientInterface.cpp (+2/-1)
storage/ndb/src/cw/util/ClientInterface.hpp (+2/-1)
storage/ndb/src/cw/util/SocketRegistry.cpp (+2/-1)
storage/ndb/src/cw/util/SocketRegistry.hpp (+2/-1)
storage/ndb/src/cw/util/SocketService.cpp (+2/-1)
storage/ndb/src/cw/util/SocketService.hpp (+2/-1)
storage/ndb/src/kernel/Makefile.am (+1/-0)
storage/ndb/src/kernel/SimBlockList.cpp (+2/-1)
storage/ndb/src/kernel/blocks/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/backup/Backup.cpp (+2/-1)
storage/ndb/src/kernel/blocks/backup/Backup.hpp (+2/-1)
storage/ndb/src/kernel/blocks/backup/BackupFormat.hpp (+2/-1)
storage/ndb/src/kernel/blocks/backup/BackupInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/backup/FsBuffer.hpp (+2/-1)
storage/ndb/src/kernel/blocks/backup/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/backup/read.cpp (+2/-1)
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.cpp (+2/-1)
storage/ndb/src/kernel/blocks/cmvmi/Cmvmi.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbacc/Dbacc.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbacc/DbaccInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdict/Dbdict.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdict/Dbdict.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdict/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/dbdict/Master_AddTable.sfl (+1/-0)
storage/ndb/src/kernel/blocks/dbdict/SchemaFile.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdict/Slave_AddTable.sfl (+1/-0)
storage/ndb/src/kernel/blocks/dbdict/printSchemaFile.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/DbdihInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/DbdihMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/dbdih/Sysfile.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/printSysfile.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbdih/printSysfile/printSysfile.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/DblqhInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/DblqhMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/reader.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dblqh/redoLogReader/records.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtc/Dbtc.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtc/DbtcInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtc/DbtcMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/AttributeOffset.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/Dbtup.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupAbort.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupBuffer.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupCommit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupDebug.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupDiskAlloc.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupExecQuery.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupFixAlloc.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupGen.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupIndex.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupMeta.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupPagMan.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupPageMap.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupRoutines.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupScan.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupStoredProcDef.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupTabDesMan.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupTrigger.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/DbtupVarAlloc.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/Makefile.am (+1/-0)
storage/ndb/src/kernel/blocks/dbtup/Undo_buffer.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/Undo_buffer.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/test_varpage.cpp (+1/-0)
storage/ndb/src/kernel/blocks/dbtup/tuppage.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtup/tuppage.hpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/Dbtux.hpp (+1/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxCmp.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxDebug.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxGen.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxMaint.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxMeta.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxNode.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxScan.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxSearch.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxStat.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbtux/DbtuxTree.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbutil/DbUtil.cpp (+2/-1)
storage/ndb/src/kernel/blocks/dbutil/DbUtil.hpp (+2/-1)
storage/ndb/src/kernel/blocks/diskpage.cpp (+1/-0)
storage/ndb/src/kernel/blocks/diskpage.hpp (+2/-1)
storage/ndb/src/kernel/blocks/lgman.hpp (+2/-1)
storage/ndb/src/kernel/blocks/mutexes.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbcntr/Ndbcntr.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbcntr/NdbcntrSysTable.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/AsyncFile.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/AsyncFileTest/AsyncFileTest.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/CircularIndex.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/Filename.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/Filename.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannel.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/MemoryChannelTest/MemoryChannelTest.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/Ndbfs.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/OpenFiles.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/Pool.hpp (+2/-1)
storage/ndb/src/kernel/blocks/ndbfs/VoidFs.cpp (+2/-1)
storage/ndb/src/kernel/blocks/pgman.cpp (+2/-1)
storage/ndb/src/kernel/blocks/pgman.hpp (+2/-1)
storage/ndb/src/kernel/blocks/print_file.cpp (+2/-1)
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp (+2/-1)
storage/ndb/src/kernel/blocks/qmgr/QmgrInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/qmgr/QmgrMain.cpp (+2/-1)
storage/ndb/src/kernel/blocks/qmgr/timer.hpp (+2/-1)
storage/ndb/src/kernel/blocks/record_types.hpp (+2/-1)
storage/ndb/src/kernel/blocks/restore.cpp (+2/-1)
storage/ndb/src/kernel/blocks/restore.hpp (+2/-1)
storage/ndb/src/kernel/blocks/suma/Suma.cpp (+2/-1)
storage/ndb/src/kernel/blocks/suma/Suma.hpp (+2/-1)
storage/ndb/src/kernel/blocks/suma/SumaInit.cpp (+2/-1)
storage/ndb/src/kernel/blocks/trix/Trix.cpp (+2/-1)
storage/ndb/src/kernel/blocks/trix/Trix.hpp (+2/-1)
storage/ndb/src/kernel/blocks/tsman.cpp (+2/-1)
storage/ndb/src/kernel/blocks/tsman.hpp (+2/-1)
storage/ndb/src/kernel/error/ErrorHandlingMacros.hpp (+2/-1)
storage/ndb/src/kernel/error/ErrorReporter.cpp (+2/-1)
storage/ndb/src/kernel/error/ErrorReporter.hpp (+2/-1)
storage/ndb/src/kernel/error/Makefile.am (+1/-0)
storage/ndb/src/kernel/error/TimeModule.cpp (+2/-1)
storage/ndb/src/kernel/error/TimeModule.hpp (+2/-1)
storage/ndb/src/kernel/error/ndbd_exit_codes.c (+2/-1)
storage/ndb/src/kernel/main.cpp (+2/-1)
storage/ndb/src/kernel/vm/Array.hpp (+2/-1)
storage/ndb/src/kernel/vm/ArrayPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/CArray.hpp (+2/-1)
storage/ndb/src/kernel/vm/Callback.hpp (+2/-1)
storage/ndb/src/kernel/vm/ClusterConfiguration.cpp (+2/-1)
storage/ndb/src/kernel/vm/ClusterConfiguration.hpp (+2/-1)
storage/ndb/src/kernel/vm/Configuration.cpp (+1/-1)
storage/ndb/src/kernel/vm/Configuration.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLCFifoList.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLCHashTable.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLFifoList.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLHashTable.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLHashTable2.hpp (+2/-1)
storage/ndb/src/kernel/vm/DLList.hpp (+2/-1)
storage/ndb/src/kernel/vm/DataBuffer.hpp (+2/-1)
storage/ndb/src/kernel/vm/DynArr256.cpp (+2/-1)
storage/ndb/src/kernel/vm/DynArr256.hpp (+2/-1)
storage/ndb/src/kernel/vm/Emulator.cpp (+2/-1)
storage/ndb/src/kernel/vm/Emulator.hpp (+2/-1)
storage/ndb/src/kernel/vm/FastScheduler.cpp (+2/-1)
storage/ndb/src/kernel/vm/FastScheduler.hpp (+2/-1)
storage/ndb/src/kernel/vm/GlobalData.hpp (+2/-1)
storage/ndb/src/kernel/vm/KeyDescriptor.hpp (+2/-1)
storage/ndb/src/kernel/vm/KeyTable.hpp (+2/-1)
storage/ndb/src/kernel/vm/KeyTable2.hpp (+2/-1)
storage/ndb/src/kernel/vm/KeyTable2Ref.hpp (+2/-1)
storage/ndb/src/kernel/vm/LinearPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/LongSignal.hpp (+2/-1)
storage/ndb/src/kernel/vm/Makefile.am (+1/-0)
storage/ndb/src/kernel/vm/Mutex.cpp (+2/-1)
storage/ndb/src/kernel/vm/Mutex.hpp (+2/-1)
storage/ndb/src/kernel/vm/NdbdSuperPool.cpp (+2/-1)
storage/ndb/src/kernel/vm/NdbdSuperPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/Pool.cpp (+2/-1)
storage/ndb/src/kernel/vm/Pool.hpp (+2/-1)
storage/ndb/src/kernel/vm/Prio.hpp (+2/-1)
storage/ndb/src/kernel/vm/RWPool.cpp (+2/-1)
storage/ndb/src/kernel/vm/RWPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/RequestTracker.hpp (+2/-1)
storage/ndb/src/kernel/vm/Rope.cpp (+1/-0)
storage/ndb/src/kernel/vm/Rope.hpp (+2/-1)
storage/ndb/src/kernel/vm/SLFifoList.hpp (+2/-1)
storage/ndb/src/kernel/vm/SLList.hpp (+2/-1)
storage/ndb/src/kernel/vm/SafeCounter.cpp (+2/-1)
storage/ndb/src/kernel/vm/SafeCounter.hpp (+2/-1)
storage/ndb/src/kernel/vm/SectionReader.cpp (+2/-1)
storage/ndb/src/kernel/vm/SectionReader.hpp (+2/-1)
storage/ndb/src/kernel/vm/SignalCounter.hpp (+2/-1)
storage/ndb/src/kernel/vm/SimBlockList.hpp (+2/-1)
storage/ndb/src/kernel/vm/SimplePropertiesSection.cpp (+2/-1)
storage/ndb/src/kernel/vm/SimulatedBlock.cpp (+2/-1)
storage/ndb/src/kernel/vm/SimulatedBlock.hpp (+2/-1)
storage/ndb/src/kernel/vm/SuperPool.cpp (+2/-1)
storage/ndb/src/kernel/vm/SuperPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/ThreadConfig.cpp (+2/-1)
storage/ndb/src/kernel/vm/ThreadConfig.hpp (+2/-1)
storage/ndb/src/kernel/vm/TimeQueue.cpp (+2/-1)
storage/ndb/src/kernel/vm/TimeQueue.hpp (+2/-1)
storage/ndb/src/kernel/vm/TransporterCallback.cpp (+2/-1)
storage/ndb/src/kernel/vm/VMSignal.cpp (+2/-1)
storage/ndb/src/kernel/vm/VMSignal.hpp (+2/-1)
storage/ndb/src/kernel/vm/WOPool.cpp (+2/-1)
storage/ndb/src/kernel/vm/WOPool.hpp (+2/-1)
storage/ndb/src/kernel/vm/WaitQueue.hpp (+2/-1)
storage/ndb/src/kernel/vm/WatchDog.cpp (+2/-1)
storage/ndb/src/kernel/vm/WatchDog.hpp (+2/-1)
storage/ndb/src/kernel/vm/al_test/arrayListTest.cpp (+2/-1)
storage/ndb/src/kernel/vm/al_test/arrayPoolTest.cpp (+2/-1)
storage/ndb/src/kernel/vm/al_test/main.cpp (+2/-1)
storage/ndb/src/kernel/vm/bench_pool.cpp (+2/-1)
storage/ndb/src/kernel/vm/ndbd_malloc.cpp (+2/-1)
storage/ndb/src/kernel/vm/ndbd_malloc.hpp (+2/-1)
storage/ndb/src/kernel/vm/ndbd_malloc_impl.cpp (+2/-1)
storage/ndb/src/kernel/vm/ndbd_malloc_impl.hpp (+2/-1)
storage/ndb/src/kernel/vm/pc.hpp (+2/-1)
storage/ndb/src/kernel/vm/testCopy/rr.cpp (+2/-1)
storage/ndb/src/kernel/vm/testCopy/testCopy.cpp (+2/-1)
storage/ndb/src/kernel/vm/testDataBuffer/testDataBuffer.cpp (+2/-1)
storage/ndb/src/kernel/vm/testLongSig/testLongSig.cpp (+2/-1)
storage/ndb/src/kernel/vm/testSimplePropertiesSection/test.cpp (+2/-1)
storage/ndb/src/kernel/vm/testSuperPool.cpp (+2/-1)
storage/ndb/src/libndb.ver.in (+1/-0)
storage/ndb/src/mgmapi/LocalConfig.cpp (+2/-1)
storage/ndb/src/mgmapi/LocalConfig.hpp (+2/-1)
storage/ndb/src/mgmapi/Makefile.am (+1/-0)
storage/ndb/src/mgmapi/mgmapi.cpp (+1/-1)
storage/ndb/src/mgmapi/mgmapi_configuration.cpp (+1/-0)
storage/ndb/src/mgmapi/mgmapi_configuration.hpp (+2/-1)
storage/ndb/src/mgmapi/mgmapi_internal.h (+2/-1)
storage/ndb/src/mgmapi/ndb_logevent.cpp (+1/-1)
storage/ndb/src/mgmapi/ndb_logevent.hpp (+2/-1)
storage/ndb/src/mgmapi/test/keso.c (+2/-1)
storage/ndb/src/mgmapi/test/mgmSrvApi.cpp (+2/-1)
storage/ndb/src/mgmclient/CommandInterpreter.cpp (+2/-1)
storage/ndb/src/mgmclient/Makefile.am (+1/-0)
storage/ndb/src/mgmclient/main.cpp (+1/-1)
storage/ndb/src/mgmclient/ndb_mgmclient.h (+2/-1)
storage/ndb/src/mgmclient/ndb_mgmclient.hpp (+2/-1)
storage/ndb/src/mgmclient/test_cpcd/test_cpcd.cpp (+2/-1)
storage/ndb/src/mgmsrv/Config.cpp (+2/-1)
storage/ndb/src/mgmsrv/Config.hpp (+2/-1)
storage/ndb/src/mgmsrv/ConfigInfo.cpp (+2/-1)
storage/ndb/src/mgmsrv/ConfigInfo.hpp (+2/-1)
storage/ndb/src/mgmsrv/InitConfigFileParser.cpp (+1/-1)
storage/ndb/src/mgmsrv/InitConfigFileParser.hpp (+2/-1)
storage/ndb/src/mgmsrv/Makefile.am (+1/-0)
storage/ndb/src/mgmsrv/MgmtSrvr.cpp (+2/-1)
storage/ndb/src/mgmsrv/MgmtSrvr.hpp (+2/-1)
storage/ndb/src/mgmsrv/MgmtSrvrConfig.cpp (+2/-1)
storage/ndb/src/mgmsrv/MgmtSrvrGeneralSignalHandling.cpp (+2/-1)
storage/ndb/src/mgmsrv/Services.cpp (+2/-1)
storage/ndb/src/mgmsrv/Services.hpp (+2/-1)
storage/ndb/src/mgmsrv/SignalQueue.cpp (+2/-1)
storage/ndb/src/mgmsrv/SignalQueue.hpp (+2/-1)
storage/ndb/src/mgmsrv/convertStrToInt.cpp (+2/-1)
storage/ndb/src/mgmsrv/convertStrToInt.hpp (+2/-1)
storage/ndb/src/mgmsrv/main.cpp (+1/-1)
storage/ndb/src/mgmsrv/mkconfig/mkconfig.cpp (+2/-1)
storage/ndb/src/mgmsrv/ndb_mgmd_error.h (+1/-0)
storage/ndb/src/ndbapi/API.hpp (+2/-1)
storage/ndb/src/ndbapi/ClusterMgr.cpp (+2/-1)
storage/ndb/src/ndbapi/ClusterMgr.hpp (+2/-1)
storage/ndb/src/ndbapi/DictCache.cpp (+1/-1)
storage/ndb/src/ndbapi/DictCache.hpp (+2/-1)
storage/ndb/src/ndbapi/Makefile.am (+1/-0)
storage/ndb/src/ndbapi/Ndb.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbApiSignal.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbApiSignal.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbBlob.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbBlobImpl.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbDictionary.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbDictionaryImpl.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbDictionaryImpl.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbErrorOut.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbEventOperation.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbEventOperationImpl.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbEventOperationImpl.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbImpl.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbIndexOperation.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbIndexStat.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbLinHash.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperation.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperationDefine.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperationExec.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperationInt.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperationScan.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbOperationSearch.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbPool.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbPoolImpl.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbPoolImpl.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbRecAttr.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbReceiver.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbScanFilter.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbScanOperation.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbTransaction.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbTransactionScan.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbUtil.cpp (+2/-1)
storage/ndb/src/ndbapi/NdbUtil.hpp (+2/-1)
storage/ndb/src/ndbapi/NdbWaiter.hpp (+2/-1)
storage/ndb/src/ndbapi/Ndberr.cpp (+2/-1)
storage/ndb/src/ndbapi/Ndbif.cpp (+2/-1)
storage/ndb/src/ndbapi/Ndbinit.cpp (+2/-1)
storage/ndb/src/ndbapi/Ndblist.cpp (+2/-1)
storage/ndb/src/ndbapi/ObjectMap.cpp (+2/-1)
storage/ndb/src/ndbapi/ObjectMap.hpp (+2/-1)
storage/ndb/src/ndbapi/SignalSender.cpp (+2/-1)
storage/ndb/src/ndbapi/SignalSender.hpp (+2/-1)
storage/ndb/src/ndbapi/TransporterFacade.cpp (+2/-1)
storage/ndb/src/ndbapi/TransporterFacade.hpp (+1/-1)
storage/ndb/src/ndbapi/ndb_cluster_connection.cpp (+2/-1)
storage/ndb/src/ndbapi/ndb_cluster_connection_impl.hpp (+2/-1)
storage/ndb/src/ndbapi/ndb_internal.hpp (+1/-0)
storage/ndb/src/ndbapi/ndberror.c (+2/-1)
storage/ndb/src/ndbapi/ndberror_check.c (+1/-0)
storage/ndb/src/ndbapi/signal-sender/SignalSender.cpp (+2/-1)
storage/ndb/src/ndbapi/signal-sender/SignalSender.hpp (+2/-1)
storage/ndb/test/Makefile.am (+1/-0)
storage/ndb/test/include/AtrtClient.hpp (+2/-1)
storage/ndb/test/include/CpcClient.hpp (+2/-1)
storage/ndb/test/include/DbUtil.hpp (+2/-1)
storage/ndb/test/include/HugoAsynchTransactions.hpp (+2/-1)
storage/ndb/test/include/HugoCalculator.hpp (+2/-1)
storage/ndb/test/include/HugoOperations.hpp (+2/-1)
storage/ndb/test/include/HugoTransactions.hpp (+2/-1)
storage/ndb/test/include/NDBT.hpp (+2/-1)
storage/ndb/test/include/NDBT_DataSet.hpp (+2/-1)
storage/ndb/test/include/NDBT_DataSetTransaction.hpp (+2/-1)
storage/ndb/test/include/NDBT_Error.hpp (+2/-1)
storage/ndb/test/include/NDBT_Output.hpp (+2/-1)
storage/ndb/test/include/NDBT_ResultRow.hpp (+2/-1)
storage/ndb/test/include/NDBT_ReturnCodes.h (+2/-1)
storage/ndb/test/include/NDBT_Stats.hpp (+2/-1)
storage/ndb/test/include/NDBT_Table.hpp (+2/-1)
storage/ndb/test/include/NDBT_Tables.hpp (+2/-1)
storage/ndb/test/include/NDBT_Test.hpp (+2/-1)
storage/ndb/test/include/NDBT_Thread.hpp (+2/-1)
storage/ndb/test/include/NdbBackup.hpp (+2/-1)
storage/ndb/test/include/NdbConfig.hpp (+2/-1)
storage/ndb/test/include/NdbGrep.hpp (+2/-1)
storage/ndb/test/include/NdbMixRestarter.hpp (+2/-1)
storage/ndb/test/include/NdbRestarter.hpp (+2/-1)
storage/ndb/test/include/NdbRestarts.hpp (+2/-1)
storage/ndb/test/include/NdbSchemaCon.hpp (+2/-1)
storage/ndb/test/include/NdbSchemaOp.hpp (+2/-1)
storage/ndb/test/include/NdbTest.hpp (+2/-1)
storage/ndb/test/include/NdbTimer.hpp (+2/-1)
storage/ndb/test/include/TestNdbEventOperation.hpp (+2/-1)
storage/ndb/test/include/UtilTransactions.hpp (+2/-1)
storage/ndb/test/include/getarg.h (+2/-1)
storage/ndb/test/ndbapi/InsertRecs.cpp (+2/-1)
storage/ndb/test/ndbapi/Makefile.am (+1/-0)
storage/ndb/test/ndbapi/ScanFilter.hpp (+2/-1)
storage/ndb/test/ndbapi/ScanFunctions.hpp (+2/-1)
storage/ndb/test/ndbapi/ScanInterpretTest.hpp (+2/-1)
storage/ndb/test/ndbapi/TraceNdbApi.cpp (+2/-1)
storage/ndb/test/ndbapi/VerifyNdbApi.cpp (+2/-1)
storage/ndb/test/ndbapi/acid.cpp (+2/-1)
storage/ndb/test/ndbapi/acid2.cpp (+2/-1)
storage/ndb/test/ndbapi/acrt/NdbRepStress.cpp (+2/-1)
storage/ndb/test/ndbapi/adoInsertRecs.cpp (+2/-1)
storage/ndb/test/ndbapi/asyncGenerator.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/Bank.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/Bank.hpp (+2/-1)
storage/ndb/test/ndbapi/bank/BankLoad.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/Makefile.am (+1/-0)
storage/ndb/test/ndbapi/bank/bankCreator.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/bankMakeGL.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/bankSumAccounts.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/bankTimer.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/bankTransactionMaker.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/bankValidateAllGLs.cpp (+2/-1)
storage/ndb/test/ndbapi/bank/testBank.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/asyncGenerator.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/dbGenerator.h (+2/-1)
storage/ndb/test/ndbapi/bench/dbPopulate.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/dbPopulate.h (+2/-1)
storage/ndb/test/ndbapi/bench/macros.h (+2/-1)
storage/ndb/test/ndbapi/bench/mainAsyncGenerator.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/mainPopulate.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_async1.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_async2.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_error.hpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_schema.hpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction2.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction3.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction4.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction5.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/ndb_user_transaction6.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/testData.h (+2/-1)
storage/ndb/test/ndbapi/bench/testDefinitions.h (+2/-1)
storage/ndb/test/ndbapi/bench/userInterface.cpp (+2/-1)
storage/ndb/test/ndbapi/bench/userInterface.h (+2/-1)
storage/ndb/test/ndbapi/benchronja.cpp (+2/-1)
storage/ndb/test/ndbapi/bulk_copy.cpp (+2/-1)
storage/ndb/test/ndbapi/cdrserver.cpp (+2/-1)
storage/ndb/test/ndbapi/celloDb.cpp (+2/-1)
storage/ndb/test/ndbapi/create_all_tabs.cpp (+2/-1)
storage/ndb/test/ndbapi/create_tab.cpp (+2/-1)
storage/ndb/test/ndbapi/drop_all_tabs.cpp (+2/-1)
storage/ndb/test/ndbapi/flexAsynch.cpp (+2/-1)
storage/ndb/test/ndbapi/flexBench.cpp (+2/-1)
storage/ndb/test/ndbapi/flexHammer.cpp (+2/-1)
storage/ndb/test/ndbapi/flexScan.cpp (+2/-1)
storage/ndb/test/ndbapi/flexTT.cpp (+2/-1)
storage/ndb/test/ndbapi/flexTimedAsynch.cpp (+2/-1)
storage/ndb/test/ndbapi/flex_bench_mysql.cpp (+2/-1)
storage/ndb/test/ndbapi/index.cpp (+2/-1)
storage/ndb/test/ndbapi/index2.cpp (+2/-1)
storage/ndb/test/ndbapi/initronja.cpp (+2/-1)
storage/ndb/test/ndbapi/interpreterInTup.cpp (+2/-1)
storage/ndb/test/ndbapi/mainAsyncGenerator.cpp (+2/-1)
storage/ndb/test/ndbapi/msa.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_async1.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_async2.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_populate.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction2.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction3.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction4.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction5.cpp (+2/-1)
storage/ndb/test/ndbapi/ndb_user_transaction6.cpp (+2/-1)
storage/ndb/test/ndbapi/restarter.cpp (+2/-1)
storage/ndb/test/ndbapi/restarter2.cpp (+2/-1)
storage/ndb/test/ndbapi/restarts.cpp (+2/-1)
storage/ndb/test/ndbapi/size.cpp (+2/-1)
storage/ndb/test/ndbapi/slow_select.cpp (+1/-0)
storage/ndb/test/ndbapi/testBackup.cpp (+2/-1)
storage/ndb/test/ndbapi/testBasic.cpp (+2/-1)
storage/ndb/test/ndbapi/testBasicAsynch.cpp (+2/-1)
storage/ndb/test/ndbapi/testBitfield.cpp (+1/-0)
storage/ndb/test/ndbapi/testBlobs.cpp (+2/-1)
storage/ndb/test/ndbapi/testDataBuffers.cpp (+2/-1)
storage/ndb/test/ndbapi/testDeadlock.cpp (+2/-1)
storage/ndb/test/ndbapi/testDict.cpp (+2/-1)
storage/ndb/test/ndbapi/testGrepVerify.cpp (+2/-1)
storage/ndb/test/ndbapi/testIndex.cpp (+2/-1)
storage/ndb/test/ndbapi/testIndexStat.cpp (+1/-1)
storage/ndb/test/ndbapi/testInterpreter.cpp (+2/-1)
storage/ndb/test/ndbapi/testLcp.cpp (+1/-0)
storage/ndb/test/ndbapi/testMgm.cpp (+2/-1)
storage/ndb/test/ndbapi/testNDBT.cpp (+2/-1)
storage/ndb/test/ndbapi/testNdbApi.cpp (+2/-1)
storage/ndb/test/ndbapi/testNodeRestart.cpp (+2/-1)
storage/ndb/test/ndbapi/testOIBasic.cpp (+2/-1)
storage/ndb/test/ndbapi/testOperations.cpp (+2/-1)
storage/ndb/test/ndbapi/testOrderedIndex.cpp (+2/-1)
storage/ndb/test/ndbapi/testPartitioning.cpp (+2/-1)
storage/ndb/test/ndbapi/testReadPerf.cpp (+2/-1)
storage/ndb/test/ndbapi/testRestartGci.cpp (+2/-1)
storage/ndb/test/ndbapi/testSRBank.cpp (+2/-1)
storage/ndb/test/ndbapi/testScan.cpp (+2/-1)
storage/ndb/test/ndbapi/testScanFilter.cpp (+1/-0)
storage/ndb/test/ndbapi/testScanInterpreter.cpp (+2/-1)
storage/ndb/test/ndbapi/testScanPerf.cpp (+2/-1)
storage/ndb/test/ndbapi/testSystemRestart.cpp (+2/-1)
storage/ndb/test/ndbapi/testTimeout.cpp (+2/-1)
storage/ndb/test/ndbapi/testTransactions.cpp (+2/-1)
storage/ndb/test/ndbapi/test_event.cpp (+2/-1)
storage/ndb/test/ndbapi/test_event_merge.cpp (+1/-1)
storage/ndb/test/ndbapi/test_event_multi_table.cpp (+1/-1)
storage/ndb/test/ndbapi/userInterface.cpp (+2/-1)
storage/ndb/test/ndbnet/test.run (+2/-1)
storage/ndb/test/ndbnet/testError.run (+2/-1)
storage/ndb/test/ndbnet/testMNF.run (+2/-1)
storage/ndb/test/ndbnet/testNR.run (+2/-1)
storage/ndb/test/ndbnet/testNR1.run (+2/-1)
storage/ndb/test/ndbnet/testNR4.run (+2/-1)
storage/ndb/test/ndbnet/testSRhang.run (+2/-1)
storage/ndb/test/ndbnet/testTR295.run (+2/-1)
storage/ndb/test/newtonapi/basic_test/basic/basic.cpp (+2/-1)
storage/ndb/test/newtonapi/basic_test/bulk_read/br_test.cpp (+2/-1)
storage/ndb/test/newtonapi/basic_test/common.cpp (+2/-1)
storage/ndb/test/newtonapi/basic_test/common.hpp (+2/-1)
storage/ndb/test/newtonapi/basic_test/ptr_binding/ptr_binding_test.cpp (+2/-1)
storage/ndb/test/newtonapi/basic_test/too_basic.cpp (+2/-1)
storage/ndb/test/newtonapi/perf_test/perf.cpp (+2/-1)
storage/ndb/test/odbc/SQL99_test/SQL99_test.cpp (+2/-1)
storage/ndb/test/odbc/SQL99_test/SQL99_test.h (+2/-1)
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE.cpp (+2/-1)
storage/ndb/test/odbc/client/NDBT_ALLOCHANDLE_HDBC.cpp (+2/-1)
storage/ndb/test/odbc/client/NDBT_SQLConnect.cpp (+2/-1)
storage/ndb/test/odbc/client/NDBT_SQLPrepare.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLAllocEnvTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLAllocHandleTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLAllocHandleTest_bf.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLBindColTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLBindParameterTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLCancelTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLCloseCursorTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLColAttributeTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLColAttributeTest1.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLColAttributeTest2.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLColAttributeTest3.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLConnectTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLCopyDescTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLDescribeColTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLDisconnectTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLDriverConnectTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLEndTranTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLErrorTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLExecDirectTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLExecuteTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLFetchScrollTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLFetchTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLFreeHandleTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLFreeStmtTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetConnectAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetCursorNameTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDataTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDescFieldTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDescRecTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDiagFieldTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDiagRecSimpleTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetDiagRecTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetEnvAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetFunctionsTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetInfoTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetStmtAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLGetTypeInfoTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLMoreResultsTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLNumResultColsTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLParamDataTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLPrepareTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLPutDataTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLRowCountTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetConnectAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetCursorNameTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetDescFieldTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetDescRecTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetEnvAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLSetStmtAttrTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLTablesTest.cpp (+2/-1)
storage/ndb/test/odbc/client/SQLTransactTest.cpp (+2/-1)
storage/ndb/test/odbc/client/common.hpp (+2/-1)
storage/ndb/test/odbc/client/main.cpp (+2/-1)
storage/ndb/test/odbc/driver/testOdbcDriver.cpp (+2/-1)
storage/ndb/test/odbc/test_compiler/test_compiler.cpp (+2/-1)
storage/ndb/test/run-test/16node-tests.txt (+1/-0)
storage/ndb/test/run-test/Makefile.am (+1/-0)
storage/ndb/test/run-test/atrt-analyze-result.sh (+2/-1)
storage/ndb/test/run-test/atrt-clear-result.sh (+2/-1)
storage/ndb/test/run-test/atrt-gather-result.sh (+2/-1)
storage/ndb/test/run-test/atrt-mysql-test-run (+1/-0)
storage/ndb/test/run-test/atrt-setup.sh (+2/-1)
storage/ndb/test/run-test/atrt-testBackup (+2/-1)
storage/ndb/test/run-test/atrt.hpp (+2/-1)
storage/ndb/test/run-test/basic.txt (+1/-0)
storage/ndb/test/run-test/daily-basic-tests.txt (+1/-0)
storage/ndb/test/run-test/daily-devel-tests.txt (+1/-0)
storage/ndb/test/run-test/main.cpp (+1/-1)
storage/ndb/test/run-test/make-config.sh (+1/-0)
storage/ndb/test/run-test/make-html-reports.sh (+1/-0)
storage/ndb/test/run-test/make-index.sh (+2/-1)
storage/ndb/test/run-test/ndb-autotest.sh (+1/-0)
storage/ndb/test/src/AtrtClient.cpp (+1/-0)
storage/ndb/test/src/CpcClient.cpp (+2/-1)
storage/ndb/test/src/DbUtil.cpp (+2/-1)
storage/ndb/test/src/HugoAsynchTransactions.cpp (+2/-1)
storage/ndb/test/src/HugoCalculator.cpp (+2/-1)
storage/ndb/test/src/HugoOperations.cpp (+2/-1)
storage/ndb/test/src/HugoTransactions.cpp (+2/-1)
storage/ndb/test/src/Makefile.am (+1/-0)
storage/ndb/test/src/NDBT_Error.cpp (+2/-1)
storage/ndb/test/src/NDBT_Output.cpp (+2/-1)
storage/ndb/test/src/NDBT_ResultRow.cpp (+2/-1)
storage/ndb/test/src/NDBT_ReturnCodes.cpp (+2/-1)
storage/ndb/test/src/NDBT_Table.cpp (+2/-1)
storage/ndb/test/src/NDBT_Tables.cpp (+2/-1)
storage/ndb/test/src/NDBT_Test.cpp (+1/-1)
storage/ndb/test/src/NDBT_Thread.cpp (+2/-1)
storage/ndb/test/src/NdbBackup.cpp (+2/-1)
storage/ndb/test/src/NdbConfig.cpp (+2/-1)
storage/ndb/test/src/NdbGrep.cpp (+2/-1)
storage/ndb/test/src/NdbMixRestarter.cpp (+2/-1)
storage/ndb/test/src/NdbRestarter.cpp (+2/-1)
storage/ndb/test/src/NdbRestarts.cpp (+2/-1)
storage/ndb/test/src/NdbSchemaCon.cpp (+2/-1)
storage/ndb/test/src/NdbSchemaOp.cpp (+2/-1)
storage/ndb/test/src/UtilTransactions.cpp (+2/-1)
storage/ndb/test/tools/Makefile.am (+1/-0)
storage/ndb/test/tools/connect.cpp (+1/-1)
storage/ndb/test/tools/copy_tab.cpp (+2/-1)
storage/ndb/test/tools/cpcc.cpp (+2/-1)
storage/ndb/test/tools/create_index.cpp (+2/-1)
storage/ndb/test/tools/hugoCalculator.cpp (+2/-1)
storage/ndb/test/tools/hugoFill.cpp (+2/-1)
storage/ndb/test/tools/hugoLoad.cpp (+2/-1)
storage/ndb/test/tools/hugoLockRecords.cpp (+2/-1)
storage/ndb/test/tools/hugoPkDelete.cpp (+2/-1)
storage/ndb/test/tools/hugoPkRead.cpp (+2/-1)
storage/ndb/test/tools/hugoPkReadRecord.cpp (+2/-1)
storage/ndb/test/tools/hugoPkUpdate.cpp (+2/-1)
storage/ndb/test/tools/hugoScanRead.cpp (+2/-1)
storage/ndb/test/tools/hugoScanUpdate.cpp (+2/-1)
storage/ndb/test/tools/listen.cpp (+2/-1)
storage/ndb/test/tools/rep_latency.cpp (+2/-1)
storage/ndb/test/tools/restart.cpp (+2/-1)
storage/ndb/test/tools/transproxy.cpp (+2/-1)
storage/ndb/test/tools/verify_index.cpp (+2/-1)
storage/ndb/tools/Makefile.am (+1/-0)
storage/ndb/tools/clean-links.sh (+2/-1)
storage/ndb/tools/delete_all.cpp (+1/-1)
storage/ndb/tools/desc.cpp (+1/-1)
storage/ndb/tools/drop_index.cpp (+1/-1)
storage/ndb/tools/drop_tab.cpp (+1/-1)
storage/ndb/tools/listTables.cpp (+1/-1)
storage/ndb/tools/make-errors.pl (+2/-1)
storage/ndb/tools/make-links.sh (+2/-1)
storage/ndb/tools/ndb_config.cpp (+1/-1)
storage/ndb/tools/ndb_error_reporter (+2/-1)
storage/ndb/tools/ndb_size.pl (+1/-0)
storage/ndb/tools/ndb_test_platform.cpp (+2/-1)
storage/ndb/tools/ndbsql.cpp (+2/-1)
storage/ndb/tools/restore/Restore.cpp (+2/-1)
storage/ndb/tools/restore/Restore.hpp (+2/-1)
storage/ndb/tools/restore/consumer.cpp (+2/-1)
storage/ndb/tools/restore/consumer.hpp (+2/-1)
storage/ndb/tools/restore/consumer_printer.cpp (+2/-1)
storage/ndb/tools/restore/consumer_printer.hpp (+2/-1)
storage/ndb/tools/restore/consumer_restore.cpp (+1/-1)
storage/ndb/tools/restore/consumer_restore.hpp (+2/-1)
storage/ndb/tools/restore/consumer_restorem.cpp (+2/-1)
storage/ndb/tools/restore/ndb_nodegroup_map.h (+2/-1)
storage/ndb/tools/restore/restore_main.cpp (+1/-1)
storage/ndb/tools/rgrep (+2/-1)
storage/ndb/tools/select_all.cpp (+1/-1)
storage/ndb/tools/select_count.cpp (+1/-1)
storage/ndb/tools/waiter.cpp (+1/-1)
storage/perfschema/ha_perfschema.cc (+7/-1)
storage/perfschema/ha_perfschema.h (+36/-1)
storage/perfschema/pfs_check.cc (+2/-1)
storage/perfschema/pfs_events_waits.cc (+1/-1)
storage/perfschema/unittest/conf.txt (+1/-0)
strings/CMakeLists.txt (+6/-1)
strings/ctype-mb.c (+2/-2)
strings/ctype-simple.c (+1/-1)
strings/ctype-uca.c (+2/-2)
strings/ctype-ucs2.c (+2/-2)
strings/ctype-utf8.c (+231/-36)
strings/ctype-win1250ch.c (+2/-2)
strings/ctype.c (+1/-2)
strings/my_strtoll10.c (+1/-1)
strings/t_ctype.h (+2/-1)
subunit2junitxml (+65/-0)
support-files/MacOSX/Description.plist.sh (+1/-0)
support-files/MacOSX/Info.plist.sh (+1/-0)
support-files/MacOSX/MySQLCOM (+1/-0)
support-files/MacOSX/StartupItem.Description.plist (+1/-0)
support-files/MacOSX/StartupItem.Info.plist (+1/-0)
support-files/MacOSX/StartupItem.postinstall (+1/-0)
support-files/MacOSX/StartupParameters.plist.sh (+1/-0)
support-files/MacOSX/mwar-wrapper (+1/-0)
support-files/MacOSX/mwcc-wrapper (+1/-0)
support-files/MacOSX/postflight.sh (+1/-0)
support-files/MacOSX/preflight.sh (+1/-0)
support-files/MySQL-shared-compat.spec.sh (+1/-1)
support-files/RHEL4-SElinux/mysql.fc (+1/-0)
support-files/RHEL4-SElinux/mysql.te (+1/-0)
support-files/compiler_warnings.supp (+1/-0)
support-files/mysql.5.5.37-35.0.spec (+2121/-0)
support-files/mysql.m4 (+1/-0)
support-files/mysql.server.sh (+13/-2)
support-files/mysql.spec.sh (+5/-0)
tests/connect_test.c (+2/-1)
tests/deadlock_test.c (+1/-0)
tests/drop_test.pl (+1/-0)
tests/export.pl (+1/-0)
tests/fork2_test.pl (+1/-0)
tests/fork_big.pl (+3/-2)
tests/fork_big2.pl (+3/-2)
tests/index_corrupt.pl (+1/-0)
tests/insert_and_repair.pl (+1/-0)
tests/insert_test.c (+2/-1)
tests/list_test.c (+2/-1)
tests/lock_test.pl (+1/-0)
tests/pmail.pl (+1/-0)
tests/rename_test.pl (+1/-0)
tests/select_test.c (+2/-1)
tests/showdb_test.c (+2/-1)
tests/ssl_test.c (+2/-1)
tests/table_types.pl (+1/-0)
tests/test_delayed_insert.pl (+1/-0)
tests/truncate.pl (+1/-0)
unittest/examples/simple-t.c (+1/-0)
vio/CMakeLists.txt (+6/-1)
vio/viossl.c (+1/-1)
vio/viosslfactories.c (+2/-2)
wsrep/wsrep_api.h (+4/-0)
wsrep/wsrep_dummy.c (+0/-1)
zlib/CMakeLists.txt (+6/-1)
To merge this branch: bzr merge lp:~james-page/ubuntu/trusty/percona-xtradb-cluster-5.5/5.5.37-update
Reviewer Review Type Date Requested Status
Marc Deslauriers Approve
Review via email: mp+221872@code.launchpad.net
To post a comment you must log in.
7. By James Page

Revert problem with debian/rules comment for release

Revision history for this message
Marc Deslauriers (mdeslaur) wrote :

ACK on the merge request. I've uploaded a package for building and will release it today. Thanks!

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file '.pc/20_scripts__mysql_create_system_tables__no_test.dpatch/scripts/mysql_system_tables_data.sql'
2--- .pc/20_scripts__mysql_create_system_tables__no_test.dpatch/scripts/mysql_system_tables_data.sql 2014-02-10 14:44:23 +0000
3+++ .pc/20_scripts__mysql_create_system_tables__no_test.dpatch/scripts/mysql_system_tables_data.sql 2014-06-25 12:19:04 +0000
4@@ -24,8 +24,7 @@
5 -- Get the hostname, if the hostname has any wildcard character like "_" or "%"
6 -- add escape character in front of wildcard character to convert "_" or "%" to
7 -- a plain character
8-SET @get_hostname= @@hostname;
9-SELECT REPLACE((SELECT REPLACE(@get_hostname,'_','\_')),'%','\%') INTO @current_hostname;
10+SELECT LOWER( REPLACE((SELECT REPLACE(@@hostname,'_','\_')),'%','\%') )INTO @current_hostname;
11
12
13 -- Fill "db" table with default grants for anyone to
14@@ -41,11 +40,11 @@
15 -- from local machine if "user" table didn't exist before
16 CREATE TEMPORARY TABLE tmp_user LIKE user;
17 INSERT INTO tmp_user VALUES ('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
18-REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','' FROM dual WHERE LOWER( @current_hostname) != 'localhost';
19+REPLACE INTO tmp_user SELECT @current_hostname,'root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','' FROM dual WHERE @current_hostname != 'localhost';
20 REPLACE INTO tmp_user VALUES ('127.0.0.1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
21 REPLACE INTO tmp_user VALUES ('::1','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','',0,0,0,0,'','');
22 INSERT INTO tmp_user (host,user) VALUES ('localhost','');
23-INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE LOWER(@current_hostname ) != 'localhost';
24+INSERT INTO tmp_user (host,user) SELECT @current_hostname,'' FROM dual WHERE @current_hostname != 'localhost';
25 INSERT INTO user SELECT * FROM tmp_user WHERE @had_user_table=0;
26 DROP TABLE tmp_user;
27
28
29=== modified file '.pc/30_scripts__mysqld_safe.sh__signals.dpatch/scripts/mysqld_safe.sh'
30--- .pc/30_scripts__mysqld_safe.sh__signals.dpatch/scripts/mysqld_safe.sh 2014-02-10 14:44:23 +0000
31+++ .pc/30_scripts__mysqld_safe.sh__signals.dpatch/scripts/mysqld_safe.sh 2014-06-25 12:19:04 +0000
32@@ -325,8 +325,8 @@
33 --timezone=*) TZ="$val"; export TZ; ;;
34 --wsrep[-_]urls=*) wsrep_urls="$val"; ;;
35 --wsrep-data-home-dir=*) wsrep_data_home_dir="$val"; ;;
36- --flush-caches) flush_caches=1 ;;
37- --numa-interleave) numa_interleave=1 ;;
38+ --flush-caches=*) flush_caches="$val" ;;
39+ --numa-interleave=*) numa_interleave="$val" ;;
40 --wsrep[-_]provider=*)
41 if test -n "$val" && test "$val" != "none"
42 then
43
44=== modified file '.pc/40_scripts__mysql_install_db.sh__no_test.dpatch/scripts/mysql_install_db.sh' (properties changed: -x to +x)
45--- .pc/40_scripts__mysql_install_db.sh__no_test.dpatch/scripts/mysql_install_db.sh 2014-02-10 14:44:23 +0000
46+++ .pc/40_scripts__mysql_install_db.sh__no_test.dpatch/scripts/mysql_install_db.sh 2014-06-25 12:19:04 +0000
47@@ -1,5 +1,5 @@
48 #!/bin/sh
49-# Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
50+# Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
51 #
52 # This program is free software; you can redistribute it and/or modify
53 # it under the terms of the GNU General Public License as published by
54@@ -269,16 +269,16 @@
55 cannot_find_file mysqld $basedir/libexec $basedir/sbin $basedir/bin
56 exit 1
57 fi
58- langdir=`find_in_basedir --dir errmsg.sys share/english share/mysql/english`
59+ langdir=`find_in_basedir --dir errmsg.sys share/english share/percona-xtradb-cluster/english share/mysql/english`
60 if test -z "$langdir"
61 then
62- cannot_find_file errmsg.sys $basedir/share/english $basedir/share/mysql/english
63+ cannot_find_file errmsg.sys $basedir/share/english $basedir/share/percona-xtradb-cluster/english $basedir/share/mysql/english
64 exit 1
65 fi
66- pkgdatadir=`find_in_basedir --dir fill_help_tables.sql share share/mysql`
67+ pkgdatadir=`find_in_basedir --dir fill_help_tables.sql share share/percona-xtradb-cluster share/mysql`
68 if test -z "$pkgdatadir"
69 then
70- cannot_find_file fill_help_tables.sql $basedir/share $basedir/share/mysql
71+ cannot_find_file fill_help_tables.sql $basedir/share $basedir/share/percona-xtradb-cluster $basedir/share/mysql
72 exit 1
73 fi
74 scriptdir="$basedir/scripts"
75@@ -426,8 +426,8 @@
76 echo "describes problems on your OS. Another information source are the"
77 echo "MySQL email archives available at http://lists.mysql.com/."
78 echo
79- echo "Please check all of the above before mailing us! And remember, if"
80- echo "you do mail us, you MUST use the $scriptdir/mysqlbug script!"
81+ echo "Please check all of the above before submitting a bug report at"
82+ echo " https://bugs.launchpad.net/percona-xtradb-cluster/+filebug"
83 echo
84 exit 1
85 fi
86@@ -478,7 +478,8 @@
87 fi
88
89 echo
90- echo "Please report any problems with the $scriptdir/mysqlbug script!"
91+ echo "Please report any problems at"
92+ echo " https://bugs.launchpad.net/percona-xtradb-cluster/+filebug"
93 echo
94 echo "Percona recommends that all production deployments be protected with a support"
95 echo "contract (http://www.percona.com/mysql-suppport/) to ensure the highest uptime,"
96
97=== modified file '.pc/50_mysql-test__db_test.dpatch/mysql-test/mysql-test-run.pl'
98--- .pc/50_mysql-test__db_test.dpatch/mysql-test/mysql-test-run.pl 2014-02-10 14:44:23 +0000
99+++ .pc/50_mysql-test__db_test.dpatch/mysql-test/mysql-test-run.pl 2014-06-25 12:19:04 +0000
100@@ -1,7 +1,7 @@
101 #!/usr/bin/perl
102 # -*- cperl -*-
103
104-# Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved.
105+# Copyright (c) 2004, 2014, Oracle and/or its affiliates. All rights reserved.
106 #
107 # This program is free software; you can redistribute it and/or modify
108 # it under the terms of the GNU General Public License as published by
109@@ -164,7 +164,7 @@
110
111 # If you add a new suite, please check TEST_DIRS in Makefile.am.
112 #
113-my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,perfschema";
114+my $DEFAULT_SUITES= "main,sys_vars,binlog,federated,rpl,innodb,innodb_zip,perfschema";
115 my $opt_suites;
116
117 our $opt_verbose= 0; # Verbose output, enable with --verbose
118@@ -419,7 +419,6 @@
119 );
120 mtr_error("Could not create testcase server port: $!") unless $server;
121 my $server_port = $server->sockport();
122- mtr_report("Using server port $server_port");
123
124 if ($opt_resfile) {
125 resfile_init("$opt_vardir/mtr-results.txt");
126@@ -477,15 +476,17 @@
127 # Send Ctrl-C to any children still running
128 kill("INT", keys(%children));
129
130- # Wait for childs to exit
131- foreach my $pid (keys %children)
132- {
133- my $ret_pid= waitpid($pid, 0);
134- if ($ret_pid != $pid){
135- mtr_report("Unknown process $ret_pid exited");
136- }
137- else {
138- delete $children{$ret_pid};
139+ if (!IS_WINDOWS) {
140+ # Wait for children to exit
141+ foreach my $pid (keys %children)
142+ {
143+ my $ret_pid= waitpid($pid, 0);
144+ if ($ret_pid != $pid){
145+ mtr_report("Unknown process $ret_pid exited");
146+ }
147+ else {
148+ delete $children{$ret_pid};
149+ }
150 }
151 }
152
153@@ -4364,7 +4365,7 @@
154 {
155 # Remove initial timestamp and look for consecutive identical lines
156 my $line_pat= $line;
157- $line_pat =~ s/^[0-9: ]*//;
158+ $line_pat =~ s/^[0-9:\-\+\.TZ ]*//;
159 if ($line_pat eq $last_pat) {
160 $num_rep++;
161 } else {
162@@ -4907,9 +4908,12 @@
163 {
164 $found_skip_core= 1;
165 }
166- elsif ($skip_binlog and mtr_match_prefix($arg, "--binlog-format"))
167+# elsif ($skip_binlog and mtr_match_prefix($arg, "--binlog-format"))
168+# {
169+# ; # Dont add --binlog-format when running without binlog
170+# }
171+ elsif ($arg eq "--loose-skip-log-bin")
172 {
173- ; # Dont add --binlog-format when running without binlog
174 }
175 elsif ($arg eq "--loose-skip-log-bin" and
176 $mysqld->option("log-slave-updates"))
177@@ -6013,7 +6017,7 @@
178 # Special override: also ignore in Pushbuild, some platforms may not have it
179 # Now, run ctest and collect output
180 my $ctest_out= `ctest $ctest_vs 2>&1`;
181- if ($? == $no_ctest && $opt_ctest == -1 && ! defined $ENV{PB2WORKDIR}) {
182+ if ($? == $no_ctest && ($opt_ctest == -1 || defined $ENV{PB2WORKDIR})) {
183 chdir($olddir);
184 return;
185 }
186
187=== removed directory '.pc/CVE-2014-0001.patch'
188=== removed directory '.pc/CVE-2014-0001.patch/client'
189=== removed file '.pc/CVE-2014-0001.patch/client/mysql.cc'
190--- .pc/CVE-2014-0001.patch/client/mysql.cc 2014-03-18 17:18:58 +0000
191+++ .pc/CVE-2014-0001.patch/client/mysql.cc 1970-01-01 00:00:00 +0000
192@@ -1,5136 +0,0 @@
193-/*
194- Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
195-
196- This program is free software; you can redistribute it and/or modify
197- it under the terms of the GNU General Public License as published by
198- the Free Software Foundation; version 2 of the License.
199-
200- This program is distributed in the hope that it will be useful,
201- but WITHOUT ANY WARRANTY; without even the implied warranty of
202- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
203- GNU General Public License for more details.
204-
205- You should have received a copy of the GNU General Public License
206- along with this program; if not, write to the Free Software
207- Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
208-*/
209-
210-/* mysql command tool
211- * Commands compatible with mSQL by David J. Hughes
212- *
213- * Written by:
214- * Michael 'Monty' Widenius
215- * Andi Gutmans <andi@zend.com>
216- * Zeev Suraski <zeev@zend.com>
217- * Jani Tolonen <jani@mysql.com>
218- * Matt Wagner <matt@mysql.com>
219- * Jeremy Cole <jcole@mysql.com>
220- * Tonu Samuel <tonu@mysql.com>
221- * Harrison Fisk <harrison@mysql.com>
222- *
223- **/
224-
225-#include "client_priv.h"
226-#include <m_ctype.h>
227-#include <stdarg.h>
228-#include <my_dir.h>
229-#ifndef __GNU_LIBRARY__
230-#define __GNU_LIBRARY__ // Skip warnings in getopt.h
231-#endif
232-#include "my_readline.h"
233-#include <signal.h>
234-#include <violite.h>
235-#ifndef __WIN__
236-#include "syslog.h"
237-#endif
238-
239-#define MAX_SYSLOG_MESSAGE 900
240-
241-#if defined(USE_LIBEDIT_INTERFACE) && defined(HAVE_LOCALE_H)
242-#include <locale.h>
243-#endif
244-
245-const char *VER= "14.14";
246-
247-/* Don't try to make a nice table if the data is too big */
248-#define MAX_COLUMN_LENGTH 1024
249-
250-/* Buffer to hold 'version' and 'version_comment' */
251-static char *server_version= NULL;
252-
253-/* Array of options to pass to libemysqld */
254-#define MAX_SERVER_ARGS 64
255-
256-#include "sql_string.h"
257-
258-extern "C" {
259-#if defined(HAVE_CURSES_H) && defined(HAVE_TERM_H)
260-#include <curses.h>
261-#include <term.h>
262-#else
263-#if defined(HAVE_TERMIOS_H)
264-#include <termios.h>
265-#include <unistd.h>
266-#elif defined(HAVE_TERMBITS_H)
267-#include <termbits.h>
268-#elif defined(HAVE_ASM_TERMBITS_H) && (!defined __GLIBC__ || !(__GLIBC__ > 2 || __GLIBC__ == 2 && __GLIBC_MINOR__ > 0))
269-#include <asm/termbits.h> // Standard linux
270-#endif
271-#undef VOID
272-#if defined(HAVE_TERMCAP_H)
273-#include <termcap.h>
274-#else
275-#ifdef HAVE_CURSES_H
276-#include <curses.h>
277-#endif
278-#undef SYSV // hack to avoid syntax error
279-#ifdef HAVE_TERM_H
280-#include <term.h>
281-#endif
282-#endif
283-#endif
284-
285-#if defined(__WIN__)
286-#include <conio.h>
287-#else
288-#include <readline/readline.h>
289-#define HAVE_READLINE
290-#define USE_POPEN
291-#endif
292- //int vidattr(long unsigned int attrs); // Was missing in sun curses
293-}
294-
295-#if !defined(HAVE_VIDATTR)
296-#undef vidattr
297-#define vidattr(A) {} // Can't get this to work
298-#endif
299-
300-#ifdef FN_NO_CASE_SENSE
301-#define cmp_database(cs,A,B) my_strcasecmp((cs), (A), (B))
302-#else
303-#define cmp_database(cs,A,B) strcmp((A),(B))
304-#endif
305-
306-#include "completion_hash.h"
307-#include <welcome_copyright_notice.h> // ORACLE_WELCOME_COPYRIGHT_NOTICE
308-
309-#define PROMPT_CHAR '\\'
310-#define DEFAULT_DELIMITER ";"
311-
312-#define MAX_BATCH_BUFFER_SIZE (1024L * 1024L * 1024L)
313-
314-typedef struct st_status
315-{
316- int exit_status;
317- ulong query_start_line;
318- char *file_name;
319- LINE_BUFFER *line_buff;
320- bool batch,add_to_history;
321-} STATUS;
322-
323-
324-static HashTable ht;
325-static char **defaults_argv;
326-
327-enum enum_info_type { INFO_INFO,INFO_ERROR,INFO_RESULT};
328-typedef enum enum_info_type INFO_TYPE;
329-
330-my_bool opt_no_remove_eol_carret=0;
331-
332-static MYSQL mysql; /* The connection */
333-static my_bool ignore_errors=0,wait_flag=0,quick=0,
334- connected=0,opt_raw_data=0,unbuffered=0,output_tables=0,
335- opt_rehash=1,skip_updates=0,safe_updates=0,one_database=0,
336- opt_compress=0, using_opt_local_infile=0,
337- vertical=0, line_numbers=1, column_names=1,opt_html=0,
338- opt_xml=0,opt_nopager=1, opt_outfile=0, named_cmds= 0,
339- tty_password= 0, opt_nobeep=0, opt_reconnect=1,
340- opt_secure_auth= 0,
341- default_pager_set= 0, opt_sigint_ignore= 0,
342- auto_vertical_output= 0,
343- show_warnings= 0, executing_query= 0, interrupted_query= 0,
344- ignore_spaces= 0, opt_syslog= 0;
345-static my_bool debug_info_flag, debug_check_flag;
346-static my_bool column_types_flag;
347-static my_bool preserve_comments= 0;
348-static ulong opt_max_allowed_packet, opt_net_buffer_length;
349-static uint verbose=0,opt_silent=0,opt_mysql_port=0, opt_local_infile=0;
350-static uint opt_enable_cleartext_plugin= 0;
351-static my_bool using_opt_enable_cleartext_plugin= 0;
352-static uint my_end_arg;
353-static char * opt_mysql_unix_port=0;
354-static int connect_flag=CLIENT_INTERACTIVE;
355-static char *current_host,*current_db,*current_user=0,*opt_password=0,
356- *current_prompt=0, *delimiter_str= 0,
357- *default_charset= (char*) MYSQL_AUTODETECT_CHARSET_NAME,
358- *opt_init_command= 0;
359-static char *histfile;
360-static char *histfile_tmp;
361-static String glob_buffer,old_buffer;
362-static String processed_prompt;
363-static char *full_username=0,*part_username=0,*default_prompt=0;
364-static int wait_time = 5;
365-static STATUS status;
366-static ulong select_limit,max_join_size,opt_connect_timeout=0;
367-static char mysql_charsets_dir[FN_REFLEN+1];
368-static char *opt_plugin_dir= 0, *opt_default_auth= 0;
369-static const char *xmlmeta[] = {
370- "&", "&amp;",
371- "<", "&lt;",
372- ">", "&gt;",
373- "\"", "&quot;",
374- /* Turn \0 into a space. Why not &#0;? That's not valid XML or HTML. */
375- "\0", " ",
376- 0, 0
377-};
378-static const char *day_names[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
379-static const char *month_names[]={"Jan","Feb","Mar","Apr","May","Jun","Jul",
380- "Aug","Sep","Oct","Nov","Dec"};
381-static char default_pager[FN_REFLEN];
382-static char pager[FN_REFLEN], outfile[FN_REFLEN];
383-static FILE *PAGER, *OUTFILE;
384-static MEM_ROOT hash_mem_root;
385-static uint prompt_counter;
386-static char delimiter[16]= DEFAULT_DELIMITER;
387-static uint delimiter_length= 1;
388-
389-#ifdef HAVE_SMEM
390-static char *shared_memory_base_name=0;
391-#endif
392-static uint opt_protocol=0;
393-static CHARSET_INFO *charset_info= &my_charset_latin1;
394-
395-#include "sslopt-vars.h"
396-
397-const char *default_dbug_option="d:t:o,/tmp/mysql.trace";
398-
399-void tee_fprintf(FILE *file, const char *fmt, ...);
400-void tee_fputs(const char *s, FILE *file);
401-void tee_puts(const char *s, FILE *file);
402-void tee_putc(int c, FILE *file);
403-void write_syslog(String *buffer);
404-static void tee_print_sized_data(const char *, unsigned int, unsigned int, bool);
405-/* The names of functions that actually do the manipulation. */
406-static int get_options(int argc,char **argv);
407-extern "C" my_bool get_one_option(int optid, const struct my_option *opt,
408- char *argument);
409-static int com_quit(String *str,char*),
410- com_go(String *str,char*), com_ego(String *str,char*),
411- com_print(String *str,char*),
412- com_help(String *str,char*), com_clear(String *str,char*),
413- com_connect(String *str,char*), com_status(String *str,char*),
414- com_use(String *str,char*), com_source(String *str, char*),
415- com_rehash(String *str, char*), com_tee(String *str, char*),
416- com_notee(String *str, char*), com_charset(String *str,char*),
417- com_prompt(String *str, char*), com_delimiter(String *str, char*),
418- com_warnings(String *str, char*), com_nowarnings(String *str, char*);
419-
420-#ifdef USE_POPEN
421-static int com_nopager(String *str, char*), com_pager(String *str, char*),
422- com_edit(String *str,char*), com_shell(String *str, char *);
423-#endif
424-
425-static int read_and_execute(bool interactive);
426-static int sql_connect(char *host,char *database,char *user,char *password,
427- uint silent);
428-static const char *server_version_string(MYSQL *mysql);
429-static int put_info(const char *str,INFO_TYPE info,uint error=0,
430- const char *sql_state=0);
431-static int put_error(MYSQL *mysql);
432-static void safe_put_field(const char *pos,ulong length);
433-static void xmlencode_print(const char *src, uint length);
434-static void init_pager();
435-static void end_pager();
436-static void init_tee(const char *);
437-static void end_tee();
438-static const char* construct_prompt();
439-static char *get_arg(char *line, my_bool get_next_arg);
440-static void init_username();
441-static void add_int_to_prompt(int toadd);
442-static int get_result_width(MYSQL_RES *res);
443-static int get_field_disp_length(MYSQL_FIELD * field);
444-static int normalize_dbname(const char *line, char *buff, uint buff_size);
445-static int get_quote_count(const char *line);
446-
447-/* A structure which contains information on the commands this program
448- can understand. */
449-
450-typedef struct {
451- const char *name; /* User printable name of the function. */
452- char cmd_char; /* msql command character */
453- int (*func)(String *str,char *); /* Function to call to do the job. */
454- bool takes_params; /* Max parameters for command */
455- const char *doc; /* Documentation for this function. */
456-} COMMANDS;
457-
458-static COMMANDS commands[] = {
459- { "?", '?', com_help, 1, "Synonym for `help'." },
460- { "clear", 'c', com_clear, 0, "Clear the current input statement."},
461- { "connect",'r', com_connect,1,
462- "Reconnect to the server. Optional arguments are db and host." },
463- { "delimiter", 'd', com_delimiter, 1,
464- "Set statement delimiter." },
465-#ifdef USE_POPEN
466- { "edit", 'e', com_edit, 0, "Edit command with $EDITOR."},
467-#endif
468- { "ego", 'G', com_ego, 0,
469- "Send command to mysql server, display result vertically."},
470- { "exit", 'q', com_quit, 0, "Exit mysql. Same as quit."},
471- { "go", 'g', com_go, 0, "Send command to mysql server." },
472- { "help", 'h', com_help, 1, "Display this help." },
473-#ifdef USE_POPEN
474- { "nopager",'n', com_nopager,0, "Disable pager, print to stdout." },
475-#endif
476- { "notee", 't', com_notee, 0, "Don't write into outfile." },
477-#ifdef USE_POPEN
478- { "pager", 'P', com_pager, 1,
479- "Set PAGER [to_pager]. Print the query results via PAGER." },
480-#endif
481- { "print", 'p', com_print, 0, "Print current command." },
482- { "prompt", 'R', com_prompt, 1, "Change your mysql prompt."},
483- { "quit", 'q', com_quit, 0, "Quit mysql." },
484- { "rehash", '#', com_rehash, 0, "Rebuild completion hash." },
485- { "source", '.', com_source, 1,
486- "Execute an SQL script file. Takes a file name as an argument."},
487- { "status", 's', com_status, 0, "Get status information from the server."},
488-#ifdef USE_POPEN
489- { "system", '!', com_shell, 1, "Execute a system shell command."},
490-#endif
491- { "tee", 'T', com_tee, 1,
492- "Set outfile [to_outfile]. Append everything into given outfile." },
493- { "use", 'u', com_use, 1,
494- "Use another database. Takes database name as argument." },
495- { "charset", 'C', com_charset, 1,
496- "Switch to another charset. Might be needed for processing binlog with multi-byte charsets." },
497- { "warnings", 'W', com_warnings, 0,
498- "Show warnings after every statement." },
499- { "nowarning", 'w', com_nowarnings, 0,
500- "Don't show warnings after every statement." },
501- /* Get bash-like expansion for some commands */
502- { "create table", 0, 0, 0, ""},
503- { "create database", 0, 0, 0, ""},
504- { "show databases", 0, 0, 0, ""},
505- { "show fields from", 0, 0, 0, ""},
506- { "show keys from", 0, 0, 0, ""},
507- { "show tables", 0, 0, 0, ""},
508- { "load data from", 0, 0, 0, ""},
509- { "alter table", 0, 0, 0, ""},
510- { "set option", 0, 0, 0, ""},
511- { "lock tables", 0, 0, 0, ""},
512- { "unlock tables", 0, 0, 0, ""},
513- /* generated 2006-12-28. Refresh occasionally from lexer. */
514- { "ACTION", 0, 0, 0, ""},
515- { "ADD", 0, 0, 0, ""},
516- { "AFTER", 0, 0, 0, ""},
517- { "AGAINST", 0, 0, 0, ""},
518- { "AGGREGATE", 0, 0, 0, ""},
519- { "ALL", 0, 0, 0, ""},
520- { "ALGORITHM", 0, 0, 0, ""},
521- { "ALTER", 0, 0, 0, ""},
522- { "ANALYZE", 0, 0, 0, ""},
523- { "AND", 0, 0, 0, ""},
524- { "ANY", 0, 0, 0, ""},
525- { "AS", 0, 0, 0, ""},
526- { "ASC", 0, 0, 0, ""},
527- { "ASCII", 0, 0, 0, ""},
528- { "ASENSITIVE", 0, 0, 0, ""},
529- { "AUTO_INCREMENT", 0, 0, 0, ""},
530- { "AVG", 0, 0, 0, ""},
531- { "AVG_ROW_LENGTH", 0, 0, 0, ""},
532- { "BACKUP", 0, 0, 0, ""},
533- { "BDB", 0, 0, 0, ""},
534- { "BEFORE", 0, 0, 0, ""},
535- { "BEGIN", 0, 0, 0, ""},
536- { "BERKELEYDB", 0, 0, 0, ""},
537- { "BETWEEN", 0, 0, 0, ""},
538- { "BIGINT", 0, 0, 0, ""},
539- { "BINARY", 0, 0, 0, ""},
540- { "BINLOG", 0, 0, 0, ""},
541- { "BIT", 0, 0, 0, ""},
542- { "BLOB", 0, 0, 0, ""},
543- { "BOOL", 0, 0, 0, ""},
544- { "BOOLEAN", 0, 0, 0, ""},
545- { "BOTH", 0, 0, 0, ""},
546- { "BTREE", 0, 0, 0, ""},
547- { "BY", 0, 0, 0, ""},
548- { "BYTE", 0, 0, 0, ""},
549- { "CACHE", 0, 0, 0, ""},
550- { "CALL", 0, 0, 0, ""},
551- { "CASCADE", 0, 0, 0, ""},
552- { "CASCADED", 0, 0, 0, ""},
553- { "CASE", 0, 0, 0, ""},
554- { "CHAIN", 0, 0, 0, ""},
555- { "CHANGE", 0, 0, 0, ""},
556- { "CHANGED", 0, 0, 0, ""},
557- { "CHAR", 0, 0, 0, ""},
558- { "CHARACTER", 0, 0, 0, ""},
559- { "CHARSET", 0, 0, 0, ""},
560- { "CHECK", 0, 0, 0, ""},
561- { "CHECKSUM", 0, 0, 0, ""},
562- { "CIPHER", 0, 0, 0, ""},
563- { "CLIENT", 0, 0, 0, ""},
564- { "CLOSE", 0, 0, 0, ""},
565- { "CODE", 0, 0, 0, ""},
566- { "COLLATE", 0, 0, 0, ""},
567- { "COLLATION", 0, 0, 0, ""},
568- { "COLUMN", 0, 0, 0, ""},
569- { "COLUMNS", 0, 0, 0, ""},
570- { "COMMENT", 0, 0, 0, ""},
571- { "COMMIT", 0, 0, 0, ""},
572- { "COMMITTED", 0, 0, 0, ""},
573- { "COMPACT", 0, 0, 0, ""},
574- { "COMPRESSED", 0, 0, 0, ""},
575- { "CONCURRENT", 0, 0, 0, ""},
576- { "CONDITION", 0, 0, 0, ""},
577- { "CONNECTION", 0, 0, 0, ""},
578- { "CONSISTENT", 0, 0, 0, ""},
579- { "CONSTRAINT", 0, 0, 0, ""},
580- { "CONTAINS", 0, 0, 0, ""},
581- { "CONTINUE", 0, 0, 0, ""},
582- { "CONVERT", 0, 0, 0, ""},
583- { "CREATE", 0, 0, 0, ""},
584- { "CROSS", 0, 0, 0, ""},
585- { "CUBE", 0, 0, 0, ""},
586- { "CURRENT_DATE", 0, 0, 0, ""},
587- { "CURRENT_TIME", 0, 0, 0, ""},
588- { "CURRENT_TIMESTAMP", 0, 0, 0, ""},
589- { "CURRENT_USER", 0, 0, 0, ""},
590- { "CURSOR", 0, 0, 0, ""},
591- { "DATA", 0, 0, 0, ""},
592- { "DATABASE", 0, 0, 0, ""},
593- { "DATABASES", 0, 0, 0, ""},
594- { "DATE", 0, 0, 0, ""},
595- { "DATETIME", 0, 0, 0, ""},
596- { "DAY", 0, 0, 0, ""},
597- { "DAY_HOUR", 0, 0, 0, ""},
598- { "DAY_MICROSECOND", 0, 0, 0, ""},
599- { "DAY_MINUTE", 0, 0, 0, ""},
600- { "DAY_SECOND", 0, 0, 0, ""},
601- { "DEALLOCATE", 0, 0, 0, ""},
602- { "DEC", 0, 0, 0, ""},
603- { "DECIMAL", 0, 0, 0, ""},
604- { "DECLARE", 0, 0, 0, ""},
605- { "DEFAULT", 0, 0, 0, ""},
606- { "DEFINER", 0, 0, 0, ""},
607- { "DELAYED", 0, 0, 0, ""},
608- { "DELAY_KEY_WRITE", 0, 0, 0, ""},
609- { "DELETE", 0, 0, 0, ""},
610- { "DESC", 0, 0, 0, ""},
611- { "DESCRIBE", 0, 0, 0, ""},
612- { "DES_KEY_FILE", 0, 0, 0, ""},
613- { "DETERMINISTIC", 0, 0, 0, ""},
614- { "DIRECTORY", 0, 0, 0, ""},
615- { "DISABLE", 0, 0, 0, ""},
616- { "DISCARD", 0, 0, 0, ""},
617- { "DISTINCT", 0, 0, 0, ""},
618- { "DISTINCTROW", 0, 0, 0, ""},
619- { "DIV", 0, 0, 0, ""},
620- { "DO", 0, 0, 0, ""},
621- { "DOUBLE", 0, 0, 0, ""},
622- { "DROP", 0, 0, 0, ""},
623- { "DUAL", 0, 0, 0, ""},
624- { "DUMPFILE", 0, 0, 0, ""},
625- { "DUPLICATE", 0, 0, 0, ""},
626- { "DYNAMIC", 0, 0, 0, ""},
627- { "EACH", 0, 0, 0, ""},
628- { "ELSE", 0, 0, 0, ""},
629- { "ELSEIF", 0, 0, 0, ""},
630- { "ENABLE", 0, 0, 0, ""},
631- { "ENCLOSED", 0, 0, 0, ""},
632- { "END", 0, 0, 0, ""},
633- { "ENGINE", 0, 0, 0, ""},
634- { "ENGINES", 0, 0, 0, ""},
635- { "ENUM", 0, 0, 0, ""},
636- { "ERRORS", 0, 0, 0, ""},
637- { "ESCAPE", 0, 0, 0, ""},
638- { "ESCAPED", 0, 0, 0, ""},
639- { "EVENTS", 0, 0, 0, ""},
640- { "EXECUTE", 0, 0, 0, ""},
641- { "EXISTS", 0, 0, 0, ""},
642- { "EXIT", 0, 0, 0, ""},
643- { "EXPANSION", 0, 0, 0, ""},
644- { "EXPLAIN", 0, 0, 0, ""},
645- { "EXTENDED", 0, 0, 0, ""},
646- { "FALSE", 0, 0, 0, ""},
647- { "FAST", 0, 0, 0, ""},
648- { "FETCH", 0, 0, 0, ""},
649- { "FIELDS", 0, 0, 0, ""},
650- { "FILE", 0, 0, 0, ""},
651- { "FIRST", 0, 0, 0, ""},
652- { "FIXED", 0, 0, 0, ""},
653- { "FLOAT", 0, 0, 0, ""},
654- { "FLOAT4", 0, 0, 0, ""},
655- { "FLOAT8", 0, 0, 0, ""},
656- { "FLUSH", 0, 0, 0, ""},
657- { "FOR", 0, 0, 0, ""},
658- { "FORCE", 0, 0, 0, ""},
659- { "FOREIGN", 0, 0, 0, ""},
660- { "FOUND", 0, 0, 0, ""},
661- { "FROM", 0, 0, 0, ""},
662- { "FULL", 0, 0, 0, ""},
663- { "FULLTEXT", 0, 0, 0, ""},
664- { "FUNCTION", 0, 0, 0, ""},
665- { "GEOMETRY", 0, 0, 0, ""},
666- { "GEOMETRYCOLLECTION", 0, 0, 0, ""},
667- { "GET_FORMAT", 0, 0, 0, ""},
668- { "GLOBAL", 0, 0, 0, ""},
669- { "GRANT", 0, 0, 0, ""},
670- { "GRANTS", 0, 0, 0, ""},
671- { "GROUP", 0, 0, 0, ""},
672- { "HANDLER", 0, 0, 0, ""},
673- { "HASH", 0, 0, 0, ""},
674- { "HAVING", 0, 0, 0, ""},
675- { "HELP", 0, 0, 0, ""},
676- { "HIGH_PRIORITY", 0, 0, 0, ""},
677- { "HOSTS", 0, 0, 0, ""},
678- { "HOUR", 0, 0, 0, ""},
679- { "HOUR_MICROSECOND", 0, 0, 0, ""},
680- { "HOUR_MINUTE", 0, 0, 0, ""},
681- { "HOUR_SECOND", 0, 0, 0, ""},
682- { "IDENTIFIED", 0, 0, 0, ""},
683- { "IF", 0, 0, 0, ""},
684- { "IGNORE", 0, 0, 0, ""},
685- { "IMPORT", 0, 0, 0, ""},
686- { "IN", 0, 0, 0, ""},
687- { "INDEX", 0, 0, 0, ""},
688- { "INDEXES", 0, 0, 0, ""},
689- { "INFILE", 0, 0, 0, ""},
690- { "INNER", 0, 0, 0, ""},
691- { "INNOBASE", 0, 0, 0, ""},
692- { "INNODB", 0, 0, 0, ""},
693- { "INOUT", 0, 0, 0, ""},
694- { "INSENSITIVE", 0, 0, 0, ""},
695- { "INSERT", 0, 0, 0, ""},
696- { "INSERT_METHOD", 0, 0, 0, ""},
697- { "INT", 0, 0, 0, ""},
698- { "INT1", 0, 0, 0, ""},
699- { "INT2", 0, 0, 0, ""},
700- { "INT3", 0, 0, 0, ""},
701- { "INT4", 0, 0, 0, ""},
702- { "INT8", 0, 0, 0, ""},
703- { "INTEGER", 0, 0, 0, ""},
704- { "INTERVAL", 0, 0, 0, ""},
705- { "INTO", 0, 0, 0, ""},
706- { "IO_THREAD", 0, 0, 0, ""},
707- { "IS", 0, 0, 0, ""},
708- { "ISOLATION", 0, 0, 0, ""},
709- { "ISSUER", 0, 0, 0, ""},
710- { "ITERATE", 0, 0, 0, ""},
711- { "INVOKER", 0, 0, 0, ""},
712- { "JOIN", 0, 0, 0, ""},
713- { "KEY", 0, 0, 0, ""},
714- { "KEYS", 0, 0, 0, ""},
715- { "KILL", 0, 0, 0, ""},
716- { "LANGUAGE", 0, 0, 0, ""},
717- { "LAST", 0, 0, 0, ""},
718- { "LEADING", 0, 0, 0, ""},
719- { "LEAVE", 0, 0, 0, ""},
720- { "LEAVES", 0, 0, 0, ""},
721- { "LEFT", 0, 0, 0, ""},
722- { "LEVEL", 0, 0, 0, ""},
723- { "LIKE", 0, 0, 0, ""},
724- { "LIMIT", 0, 0, 0, ""},
725- { "LINES", 0, 0, 0, ""},
726- { "LINESTRING", 0, 0, 0, ""},
727- { "LOAD", 0, 0, 0, ""},
728- { "LOCAL", 0, 0, 0, ""},
729- { "LOCALTIME", 0, 0, 0, ""},
730- { "LOCALTIMESTAMP", 0, 0, 0, ""},
731- { "LOCK", 0, 0, 0, ""},
732- { "LOCKS", 0, 0, 0, ""},
733- { "LOGS", 0, 0, 0, ""},
734- { "LONG", 0, 0, 0, ""},
735- { "LONGBLOB", 0, 0, 0, ""},
736- { "LONGTEXT", 0, 0, 0, ""},
737- { "LOOP", 0, 0, 0, ""},
738- { "LOW_PRIORITY", 0, 0, 0, ""},
739- { "MASTER", 0, 0, 0, ""},
740- { "MASTER_CONNECT_RETRY", 0, 0, 0, ""},
741- { "MASTER_HOST", 0, 0, 0, ""},
742- { "MASTER_LOG_FILE", 0, 0, 0, ""},
743- { "MASTER_LOG_POS", 0, 0, 0, ""},
744- { "MASTER_PASSWORD", 0, 0, 0, ""},
745- { "MASTER_PORT", 0, 0, 0, ""},
746- { "MASTER_SERVER_ID", 0, 0, 0, ""},
747- { "MASTER_SSL", 0, 0, 0, ""},
748- { "MASTER_SSL_CA", 0, 0, 0, ""},
749- { "MASTER_SSL_CAPATH", 0, 0, 0, ""},
750- { "MASTER_SSL_CERT", 0, 0, 0, ""},
751- { "MASTER_SSL_CIPHER", 0, 0, 0, ""},
752- { "MASTER_SSL_KEY", 0, 0, 0, ""},
753- { "MASTER_USER", 0, 0, 0, ""},
754- { "MATCH", 0, 0, 0, ""},
755- { "MAX_CONNECTIONS_PER_HOUR", 0, 0, 0, ""},
756- { "MAX_QUERIES_PER_HOUR", 0, 0, 0, ""},
757- { "MAX_ROWS", 0, 0, 0, ""},
758- { "MAX_UPDATES_PER_HOUR", 0, 0, 0, ""},
759- { "MAX_USER_CONNECTIONS", 0, 0, 0, ""},
760- { "MEDIUM", 0, 0, 0, ""},
761- { "MEDIUMBLOB", 0, 0, 0, ""},
762- { "MEDIUMINT", 0, 0, 0, ""},
763- { "MEDIUMTEXT", 0, 0, 0, ""},
764- { "MERGE", 0, 0, 0, ""},
765- { "MICROSECOND", 0, 0, 0, ""},
766- { "MIDDLEINT", 0, 0, 0, ""},
767- { "MIGRATE", 0, 0, 0, ""},
768- { "MINUTE", 0, 0, 0, ""},
769- { "MINUTE_MICROSECOND", 0, 0, 0, ""},
770- { "MINUTE_SECOND", 0, 0, 0, ""},
771- { "MIN_ROWS", 0, 0, 0, ""},
772- { "MOD", 0, 0, 0, ""},
773- { "MODE", 0, 0, 0, ""},
774- { "MODIFIES", 0, 0, 0, ""},
775- { "MODIFY", 0, 0, 0, ""},
776- { "MONTH", 0, 0, 0, ""},
777- { "MULTILINESTRING", 0, 0, 0, ""},
778- { "MULTIPOINT", 0, 0, 0, ""},
779- { "MULTIPOLYGON", 0, 0, 0, ""},
780- { "MUTEX", 0, 0, 0, ""},
781- { "NAME", 0, 0, 0, ""},
782- { "NAMES", 0, 0, 0, ""},
783- { "NATIONAL", 0, 0, 0, ""},
784- { "NATURAL", 0, 0, 0, ""},
785- { "NDB", 0, 0, 0, ""},
786- { "NDBCLUSTER", 0, 0, 0, ""},
787- { "NCHAR", 0, 0, 0, ""},
788- { "NEW", 0, 0, 0, ""},
789- { "NEXT", 0, 0, 0, ""},
790- { "NO", 0, 0, 0, ""},
791- { "NONE", 0, 0, 0, ""},
792- { "NOT", 0, 0, 0, ""},
793- { "NO_WRITE_TO_BINLOG", 0, 0, 0, ""},
794- { "NULL", 0, 0, 0, ""},
795- { "NUMERIC", 0, 0, 0, ""},
796- { "NVARCHAR", 0, 0, 0, ""},
797- { "OFFSET", 0, 0, 0, ""},
798- { "OLD_PASSWORD", 0, 0, 0, ""},
799- { "ON", 0, 0, 0, ""},
800- { "ONE", 0, 0, 0, ""},
801- { "ONE_SHOT", 0, 0, 0, ""},
802- { "OPEN", 0, 0, 0, ""},
803- { "OPTIMIZE", 0, 0, 0, ""},
804- { "OPTION", 0, 0, 0, ""},
805- { "OPTIONALLY", 0, 0, 0, ""},
806- { "OR", 0, 0, 0, ""},
807- { "ORDER", 0, 0, 0, ""},
808- { "OUT", 0, 0, 0, ""},
809- { "OUTER", 0, 0, 0, ""},
810- { "OUTFILE", 0, 0, 0, ""},
811- { "PACK_KEYS", 0, 0, 0, ""},
812- { "PARTIAL", 0, 0, 0, ""},
813- { "PASSWORD", 0, 0, 0, ""},
814- { "PHASE", 0, 0, 0, ""},
815- { "POINT", 0, 0, 0, ""},
816- { "POLYGON", 0, 0, 0, ""},
817- { "PRECISION", 0, 0, 0, ""},
818- { "PREPARE", 0, 0, 0, ""},
819- { "PREV", 0, 0, 0, ""},
820- { "PRIMARY", 0, 0, 0, ""},
821- { "PRIVILEGES", 0, 0, 0, ""},
822- { "PROCEDURE", 0, 0, 0, ""},
823- { "PROCESS", 0, 0, 0, ""},
824- { "PROCESSLIST", 0, 0, 0, ""},
825- { "PURGE", 0, 0, 0, ""},
826- { "QUARTER", 0, 0, 0, ""},
827- { "QUERY", 0, 0, 0, ""},
828- { "QUICK", 0, 0, 0, ""},
829- { "READ", 0, 0, 0, ""},
830- { "READS", 0, 0, 0, ""},
831- { "REAL", 0, 0, 0, ""},
832- { "RECOVER", 0, 0, 0, ""},
833- { "REDUNDANT", 0, 0, 0, ""},
834- { "REFERENCES", 0, 0, 0, ""},
835- { "REGEXP", 0, 0, 0, ""},
836- { "RELAY_LOG_FILE", 0, 0, 0, ""},
837- { "RELAY_LOG_POS", 0, 0, 0, ""},
838- { "RELAY_THREAD", 0, 0, 0, ""},
839- { "RELEASE", 0, 0, 0, ""},
840- { "RELOAD", 0, 0, 0, ""},
841- { "RENAME", 0, 0, 0, ""},
842- { "REPAIR", 0, 0, 0, ""},
843- { "REPEATABLE", 0, 0, 0, ""},
844- { "REPLACE", 0, 0, 0, ""},
845- { "REPLICATION", 0, 0, 0, ""},
846- { "REPEAT", 0, 0, 0, ""},
847- { "REQUIRE", 0, 0, 0, ""},
848- { "RESET", 0, 0, 0, ""},
849- { "RESTORE", 0, 0, 0, ""},
850- { "RESTRICT", 0, 0, 0, ""},
851- { "RESUME", 0, 0, 0, ""},
852- { "RETURN", 0, 0, 0, ""},
853- { "RETURNS", 0, 0, 0, ""},
854- { "REVOKE", 0, 0, 0, ""},
855- { "RIGHT", 0, 0, 0, ""},
856- { "RLIKE", 0, 0, 0, ""},
857- { "ROLLBACK", 0, 0, 0, ""},
858- { "ROLLUP", 0, 0, 0, ""},
859- { "ROUTINE", 0, 0, 0, ""},
860- { "ROW", 0, 0, 0, ""},
861- { "ROWS", 0, 0, 0, ""},
862- { "ROW_FORMAT", 0, 0, 0, ""},
863- { "RTREE", 0, 0, 0, ""},
864- { "SAVEPOINT", 0, 0, 0, ""},
865- { "SCHEMA", 0, 0, 0, ""},
866- { "SCHEMAS", 0, 0, 0, ""},
867- { "SECOND", 0, 0, 0, ""},
868- { "SECOND_MICROSECOND", 0, 0, 0, ""},
869- { "SECURITY", 0, 0, 0, ""},
870- { "SELECT", 0, 0, 0, ""},
871- { "SENSITIVE", 0, 0, 0, ""},
872- { "SEPARATOR", 0, 0, 0, ""},
873- { "SERIAL", 0, 0, 0, ""},
874- { "SERIALIZABLE", 0, 0, 0, ""},
875- { "SESSION", 0, 0, 0, ""},
876- { "SET", 0, 0, 0, ""},
877- { "SHARE", 0, 0, 0, ""},
878- { "SHOW", 0, 0, 0, ""},
879- { "SHUTDOWN", 0, 0, 0, ""},
880- { "SIGNED", 0, 0, 0, ""},
881- { "SIMPLE", 0, 0, 0, ""},
882- { "SLAVE", 0, 0, 0, ""},
883- { "SNAPSHOT", 0, 0, 0, ""},
884- { "SMALLINT", 0, 0, 0, ""},
885- { "SOME", 0, 0, 0, ""},
886- { "SONAME", 0, 0, 0, ""},
887- { "SOUNDS", 0, 0, 0, ""},
888- { "SPATIAL", 0, 0, 0, ""},
889- { "SPECIFIC", 0, 0, 0, ""},
890- { "SQL", 0, 0, 0, ""},
891- { "SQLEXCEPTION", 0, 0, 0, ""},
892- { "SQLSTATE", 0, 0, 0, ""},
893- { "SQLWARNING", 0, 0, 0, ""},
894- { "SQL_BIG_RESULT", 0, 0, 0, ""},
895- { "SQL_BUFFER_RESULT", 0, 0, 0, ""},
896- { "SQL_CACHE", 0, 0, 0, ""},
897- { "SQL_CALC_FOUND_ROWS", 0, 0, 0, ""},
898- { "SQL_NO_CACHE", 0, 0, 0, ""},
899- { "SQL_SMALL_RESULT", 0, 0, 0, ""},
900- { "SQL_THREAD", 0, 0, 0, ""},
901- { "SQL_TSI_SECOND", 0, 0, 0, ""},
902- { "SQL_TSI_MINUTE", 0, 0, 0, ""},
903- { "SQL_TSI_HOUR", 0, 0, 0, ""},
904- { "SQL_TSI_DAY", 0, 0, 0, ""},
905- { "SQL_TSI_WEEK", 0, 0, 0, ""},
906- { "SQL_TSI_MONTH", 0, 0, 0, ""},
907- { "SQL_TSI_QUARTER", 0, 0, 0, ""},
908- { "SQL_TSI_YEAR", 0, 0, 0, ""},
909- { "SSL", 0, 0, 0, ""},
910- { "START", 0, 0, 0, ""},
911- { "STARTING", 0, 0, 0, ""},
912- { "STATUS", 0, 0, 0, ""},
913- { "STOP", 0, 0, 0, ""},
914- { "STORAGE", 0, 0, 0, ""},
915- { "STRAIGHT_JOIN", 0, 0, 0, ""},
916- { "STRING", 0, 0, 0, ""},
917- { "STRIPED", 0, 0, 0, ""},
918- { "SUBJECT", 0, 0, 0, ""},
919- { "SUPER", 0, 0, 0, ""},
920- { "SUSPEND", 0, 0, 0, ""},
921- { "TABLE", 0, 0, 0, ""},
922- { "TABLES", 0, 0, 0, ""},
923- { "TABLESPACE", 0, 0, 0, ""},
924- { "TEMPORARY", 0, 0, 0, ""},
925- { "TEMPTABLE", 0, 0, 0, ""},
926- { "TERMINATED", 0, 0, 0, ""},
927- { "TEXT", 0, 0, 0, ""},
928- { "THEN", 0, 0, 0, ""},
929- { "TIME", 0, 0, 0, ""},
930- { "TIMESTAMP", 0, 0, 0, ""},
931- { "TIMESTAMPADD", 0, 0, 0, ""},
932- { "TIMESTAMPDIFF", 0, 0, 0, ""},
933- { "TINYBLOB", 0, 0, 0, ""},
934- { "TINYINT", 0, 0, 0, ""},
935- { "TINYTEXT", 0, 0, 0, ""},
936- { "TO", 0, 0, 0, ""},
937- { "TRAILING", 0, 0, 0, ""},
938- { "TRANSACTION", 0, 0, 0, ""},
939- { "TRIGGER", 0, 0, 0, ""},
940- { "TRIGGERS", 0, 0, 0, ""},
941- { "TRUE", 0, 0, 0, ""},
942- { "TRUNCATE", 0, 0, 0, ""},
943- { "TYPE", 0, 0, 0, ""},
944- { "TYPES", 0, 0, 0, ""},
945- { "UNCOMMITTED", 0, 0, 0, ""},
946- { "UNDEFINED", 0, 0, 0, ""},
947- { "UNDO", 0, 0, 0, ""},
948- { "UNICODE", 0, 0, 0, ""},
949- { "UNION", 0, 0, 0, ""},
950- { "UNIQUE", 0, 0, 0, ""},
951- { "UNKNOWN", 0, 0, 0, ""},
952- { "UNLOCK", 0, 0, 0, ""},
953- { "UNSIGNED", 0, 0, 0, ""},
954- { "UNTIL", 0, 0, 0, ""},
955- { "UPDATE", 0, 0, 0, ""},
956- { "UPGRADE", 0, 0, 0, ""},
957- { "USAGE", 0, 0, 0, ""},
958- { "USE", 0, 0, 0, ""},
959- { "USER", 0, 0, 0, ""},
960- { "USER_RESOURCES", 0, 0, 0, ""},
961- { "USE_FRM", 0, 0, 0, ""},
962- { "USING", 0, 0, 0, ""},
963- { "UTC_DATE", 0, 0, 0, ""},
964- { "UTC_TIME", 0, 0, 0, ""},
965- { "UTC_TIMESTAMP", 0, 0, 0, ""},
966- { "VALUE", 0, 0, 0, ""},
967- { "VALUES", 0, 0, 0, ""},
968- { "VARBINARY", 0, 0, 0, ""},
969- { "VARCHAR", 0, 0, 0, ""},
970- { "VARCHARACTER", 0, 0, 0, ""},
971- { "VARIABLES", 0, 0, 0, ""},
972- { "VARYING", 0, 0, 0, ""},
973- { "WARNINGS", 0, 0, 0, ""},
974- { "WEEK", 0, 0, 0, ""},
975- { "WHEN", 0, 0, 0, ""},
976- { "WHERE", 0, 0, 0, ""},
977- { "WHILE", 0, 0, 0, ""},
978- { "VIEW", 0, 0, 0, ""},
979- { "WITH", 0, 0, 0, ""},
980- { "WORK", 0, 0, 0, ""},
981- { "WRITE", 0, 0, 0, ""},
982- { "X509", 0, 0, 0, ""},
983- { "XOR", 0, 0, 0, ""},
984- { "XA", 0, 0, 0, ""},
985- { "YEAR", 0, 0, 0, ""},
986- { "YEAR_MONTH", 0, 0, 0, ""},
987- { "ZEROFILL", 0, 0, 0, ""},
988- { "ABS", 0, 0, 0, ""},
989- { "ACOS", 0, 0, 0, ""},
990- { "ADDDATE", 0, 0, 0, ""},
991- { "ADDTIME", 0, 0, 0, ""},
992- { "AES_ENCRYPT", 0, 0, 0, ""},
993- { "AES_DECRYPT", 0, 0, 0, ""},
994- { "AREA", 0, 0, 0, ""},
995- { "ASIN", 0, 0, 0, ""},
996- { "ASBINARY", 0, 0, 0, ""},
997- { "ASTEXT", 0, 0, 0, ""},
998- { "ASWKB", 0, 0, 0, ""},
999- { "ASWKT", 0, 0, 0, ""},
1000- { "ATAN", 0, 0, 0, ""},
1001- { "ATAN2", 0, 0, 0, ""},
1002- { "BENCHMARK", 0, 0, 0, ""},
1003- { "BIN", 0, 0, 0, ""},
1004- { "BIT_COUNT", 0, 0, 0, ""},
1005- { "BIT_OR", 0, 0, 0, ""},
1006- { "BIT_AND", 0, 0, 0, ""},
1007- { "BIT_XOR", 0, 0, 0, ""},
1008- { "CAST", 0, 0, 0, ""},
1009- { "CEIL", 0, 0, 0, ""},
1010- { "CEILING", 0, 0, 0, ""},
1011- { "BIT_LENGTH", 0, 0, 0, ""},
1012- { "CENTROID", 0, 0, 0, ""},
1013- { "CHAR_LENGTH", 0, 0, 0, ""},
1014- { "CHARACTER_LENGTH", 0, 0, 0, ""},
1015- { "COALESCE", 0, 0, 0, ""},
1016- { "COERCIBILITY", 0, 0, 0, ""},
1017- { "COMPRESS", 0, 0, 0, ""},
1018- { "CONCAT", 0, 0, 0, ""},
1019- { "CONCAT_WS", 0, 0, 0, ""},
1020- { "CONNECTION_ID", 0, 0, 0, ""},
1021- { "CONV", 0, 0, 0, ""},
1022- { "CONVERT_TZ", 0, 0, 0, ""},
1023- { "COUNT", 0, 0, 0, ""},
1024- { "COS", 0, 0, 0, ""},
1025- { "COT", 0, 0, 0, ""},
1026- { "CRC32", 0, 0, 0, ""},
1027- { "CROSSES", 0, 0, 0, ""},
1028- { "CURDATE", 0, 0, 0, ""},
1029- { "CURTIME", 0, 0, 0, ""},
1030- { "DATE_ADD", 0, 0, 0, ""},
1031- { "DATEDIFF", 0, 0, 0, ""},
1032- { "DATE_FORMAT", 0, 0, 0, ""},
1033- { "DATE_SUB", 0, 0, 0, ""},
1034- { "DAYNAME", 0, 0, 0, ""},
1035- { "DAYOFMONTH", 0, 0, 0, ""},
1036- { "DAYOFWEEK", 0, 0, 0, ""},
1037- { "DAYOFYEAR", 0, 0, 0, ""},
1038- { "DECODE", 0, 0, 0, ""},
1039- { "DEGREES", 0, 0, 0, ""},
1040- { "DES_ENCRYPT", 0, 0, 0, ""},
1041- { "DES_DECRYPT", 0, 0, 0, ""},
1042- { "DIMENSION", 0, 0, 0, ""},
1043- { "DISJOINT", 0, 0, 0, ""},
1044- { "ELT", 0, 0, 0, ""},
1045- { "ENCODE", 0, 0, 0, ""},
1046- { "ENCRYPT", 0, 0, 0, ""},
1047- { "ENDPOINT", 0, 0, 0, ""},
1048- { "ENVELOPE", 0, 0, 0, ""},
1049- { "EQUALS", 0, 0, 0, ""},
1050- { "EXTERIORRING", 0, 0, 0, ""},
1051- { "EXTRACT", 0, 0, 0, ""},
1052- { "EXP", 0, 0, 0, ""},
1053- { "EXPORT_SET", 0, 0, 0, ""},
1054- { "FIELD", 0, 0, 0, ""},
1055- { "FIND_IN_SET", 0, 0, 0, ""},
1056- { "FLOOR", 0, 0, 0, ""},
1057- { "FORMAT", 0, 0, 0, ""},
1058- { "FOUND_ROWS", 0, 0, 0, ""},
1059- { "FROM_DAYS", 0, 0, 0, ""},
1060- { "FROM_UNIXTIME", 0, 0, 0, ""},
1061- { "GET_LOCK", 0, 0, 0, ""},
1062- { "GEOMETRYN", 0, 0, 0, ""},
1063- { "GEOMETRYTYPE", 0, 0, 0, ""},
1064- { "GEOMCOLLFROMTEXT", 0, 0, 0, ""},
1065- { "GEOMCOLLFROMWKB", 0, 0, 0, ""},
1066- { "GEOMETRYCOLLECTIONFROMTEXT", 0, 0, 0, ""},
1067- { "GEOMETRYCOLLECTIONFROMWKB", 0, 0, 0, ""},
1068- { "GEOMETRYFROMTEXT", 0, 0, 0, ""},
1069- { "GEOMETRYFROMWKB", 0, 0, 0, ""},
1070- { "GEOMFROMTEXT", 0, 0, 0, ""},
1071- { "GEOMFROMWKB", 0, 0, 0, ""},
1072- { "GLENGTH", 0, 0, 0, ""},
1073- { "GREATEST", 0, 0, 0, ""},
1074- { "GROUP_CONCAT", 0, 0, 0, ""},
1075- { "GROUP_UNIQUE_USERS", 0, 0, 0, ""},
1076- { "HEX", 0, 0, 0, ""},
1077- { "IFNULL", 0, 0, 0, ""},
1078- { "INET_ATON", 0, 0, 0, ""},
1079- { "INET_NTOA", 0, 0, 0, ""},
1080- { "INSTR", 0, 0, 0, ""},
1081- { "INTERIORRINGN", 0, 0, 0, ""},
1082- { "INTERSECTS", 0, 0, 0, ""},
1083- { "ISCLOSED", 0, 0, 0, ""},
1084- { "ISEMPTY", 0, 0, 0, ""},
1085- { "ISNULL", 0, 0, 0, ""},
1086- { "IS_FREE_LOCK", 0, 0, 0, ""},
1087- { "IS_USED_LOCK", 0, 0, 0, ""},
1088- { "LAST_INSERT_ID", 0, 0, 0, ""},
1089- { "ISSIMPLE", 0, 0, 0, ""},
1090- { "LAST_DAY", 0, 0, 0, ""},
1091- { "LCASE", 0, 0, 0, ""},
1092- { "LEAST", 0, 0, 0, ""},
1093- { "LENGTH", 0, 0, 0, ""},
1094- { "LN", 0, 0, 0, ""},
1095- { "LINEFROMTEXT", 0, 0, 0, ""},
1096- { "LINEFROMWKB", 0, 0, 0, ""},
1097- { "LINESTRINGFROMTEXT", 0, 0, 0, ""},
1098- { "LINESTRINGFROMWKB", 0, 0, 0, ""},
1099- { "LOAD_FILE", 0, 0, 0, ""},
1100- { "LOCATE", 0, 0, 0, ""},
1101- { "LOG", 0, 0, 0, ""},
1102- { "LOG2", 0, 0, 0, ""},
1103- { "LOG10", 0, 0, 0, ""},
1104- { "LOWER", 0, 0, 0, ""},
1105- { "LPAD", 0, 0, 0, ""},
1106- { "LTRIM", 0, 0, 0, ""},
1107- { "MAKE_SET", 0, 0, 0, ""},
1108- { "MAKEDATE", 0, 0, 0, ""},
1109- { "MAKETIME", 0, 0, 0, ""},
1110- { "MASTER_POS_WAIT", 0, 0, 0, ""},
1111- { "MAX", 0, 0, 0, ""},
1112- { "MBRCONTAINS", 0, 0, 0, ""},
1113- { "MBRDISJOINT", 0, 0, 0, ""},
1114- { "MBREQUAL", 0, 0, 0, ""},
1115- { "MBRINTERSECTS", 0, 0, 0, ""},
1116- { "MBROVERLAPS", 0, 0, 0, ""},
1117- { "MBRTOUCHES", 0, 0, 0, ""},
1118- { "MBRWITHIN", 0, 0, 0, ""},
1119- { "MD5", 0, 0, 0, ""},
1120- { "MID", 0, 0, 0, ""},
1121- { "MIN", 0, 0, 0, ""},
1122- { "MLINEFROMTEXT", 0, 0, 0, ""},
1123- { "MLINEFROMWKB", 0, 0, 0, ""},
1124- { "MPOINTFROMTEXT", 0, 0, 0, ""},
1125- { "MPOINTFROMWKB", 0, 0, 0, ""},
1126- { "MPOLYFROMTEXT", 0, 0, 0, ""},
1127- { "MPOLYFROMWKB", 0, 0, 0, ""},
1128- { "MONTHNAME", 0, 0, 0, ""},
1129- { "MULTILINESTRINGFROMTEXT", 0, 0, 0, ""},
1130- { "MULTILINESTRINGFROMWKB", 0, 0, 0, ""},
1131- { "MULTIPOINTFROMTEXT", 0, 0, 0, ""},
1132- { "MULTIPOINTFROMWKB", 0, 0, 0, ""},
1133- { "MULTIPOLYGONFROMTEXT", 0, 0, 0, ""},
1134- { "MULTIPOLYGONFROMWKB", 0, 0, 0, ""},
1135- { "NAME_CONST", 0, 0, 0, ""},
1136- { "NOW", 0, 0, 0, ""},
1137- { "NULLIF", 0, 0, 0, ""},
1138- { "NUMGEOMETRIES", 0, 0, 0, ""},
1139- { "NUMINTERIORRINGS", 0, 0, 0, ""},
1140- { "NUMPOINTS", 0, 0, 0, ""},
1141- { "OCTET_LENGTH", 0, 0, 0, ""},
1142- { "OCT", 0, 0, 0, ""},
1143- { "ORD", 0, 0, 0, ""},
1144- { "OVERLAPS", 0, 0, 0, ""},
1145- { "PERIOD_ADD", 0, 0, 0, ""},
1146- { "PERIOD_DIFF", 0, 0, 0, ""},
1147- { "PI", 0, 0, 0, ""},
1148- { "POINTFROMTEXT", 0, 0, 0, ""},
1149- { "POINTFROMWKB", 0, 0, 0, ""},
1150- { "POINTN", 0, 0, 0, ""},
1151- { "POLYFROMTEXT", 0, 0, 0, ""},
1152- { "POLYFROMWKB", 0, 0, 0, ""},
1153- { "POLYGONFROMTEXT", 0, 0, 0, ""},
1154- { "POLYGONFROMWKB", 0, 0, 0, ""},
1155- { "POSITION", 0, 0, 0, ""},
1156- { "POW", 0, 0, 0, ""},
1157- { "POWER", 0, 0, 0, ""},
1158- { "QUOTE", 0, 0, 0, ""},
1159- { "RADIANS", 0, 0, 0, ""},
1160- { "RAND", 0, 0, 0, ""},
1161- { "RELEASE_LOCK", 0, 0, 0, ""},
1162- { "REVERSE", 0, 0, 0, ""},
1163- { "ROUND", 0, 0, 0, ""},
1164- { "ROW_COUNT", 0, 0, 0, ""},
1165- { "RPAD", 0, 0, 0, ""},
1166- { "RTRIM", 0, 0, 0, ""},
1167- { "SEC_TO_TIME", 0, 0, 0, ""},
1168- { "SESSION_USER", 0, 0, 0, ""},
1169- { "SUBDATE", 0, 0, 0, ""},
1170- { "SIGN", 0, 0, 0, ""},
1171- { "SIN", 0, 0, 0, ""},
1172- { "SHA", 0, 0, 0, ""},
1173- { "SHA1", 0, 0, 0, ""},
1174- { "SLEEP", 0, 0, 0, ""},
1175- { "SOUNDEX", 0, 0, 0, ""},
1176- { "SPACE", 0, 0, 0, ""},
1177- { "SQRT", 0, 0, 0, ""},
1178- { "SRID", 0, 0, 0, ""},
1179- { "STARTPOINT", 0, 0, 0, ""},
1180- { "STD", 0, 0, 0, ""},
1181- { "STDDEV", 0, 0, 0, ""},
1182- { "STDDEV_POP", 0, 0, 0, ""},
1183- { "STDDEV_SAMP", 0, 0, 0, ""},
1184- { "STR_TO_DATE", 0, 0, 0, ""},
1185- { "STRCMP", 0, 0, 0, ""},
1186- { "SUBSTR", 0, 0, 0, ""},
1187- { "SUBSTRING", 0, 0, 0, ""},
1188- { "SUBSTRING_INDEX", 0, 0, 0, ""},
1189- { "SUBTIME", 0, 0, 0, ""},
1190- { "SUM", 0, 0, 0, ""},
1191- { "SYSDATE", 0, 0, 0, ""},
1192- { "SYSTEM_USER", 0, 0, 0, ""},
1193- { "TAN", 0, 0, 0, ""},
1194- { "TIME_FORMAT", 0, 0, 0, ""},
1195- { "TIME_TO_SEC", 0, 0, 0, ""},
1196- { "TIMEDIFF", 0, 0, 0, ""},
1197- { "TO_DAYS", 0, 0, 0, ""},
1198- { "TOUCHES", 0, 0, 0, ""},
1199- { "TRIM", 0, 0, 0, ""},
1200- { "UCASE", 0, 0, 0, ""},
1201- { "UNCOMPRESS", 0, 0, 0, ""},
1202- { "UNCOMPRESSED_LENGTH", 0, 0, 0, ""},
1203- { "UNHEX", 0, 0, 0, ""},
1204- { "UNIQUE_USERS", 0, 0, 0, ""},
1205- { "UNIX_TIMESTAMP", 0, 0, 0, ""},
1206- { "UPPER", 0, 0, 0, ""},
1207- { "UUID", 0, 0, 0, ""},
1208- { "VARIANCE", 0, 0, 0, ""},
1209- { "VAR_POP", 0, 0, 0, ""},
1210- { "VAR_SAMP", 0, 0, 0, ""},
1211- { "VERSION", 0, 0, 0, ""},
1212- { "WEEKDAY", 0, 0, 0, ""},
1213- { "WEEKOFYEAR", 0, 0, 0, ""},
1214- { "WITHIN", 0, 0, 0, ""},
1215- { "X", 0, 0, 0, ""},
1216- { "Y", 0, 0, 0, ""},
1217- { "YEARWEEK", 0, 0, 0, ""},
1218- /* end sentinel */
1219- { (char *)NULL, 0, 0, 0, ""}
1220-};
1221-
1222-static const char *load_default_groups[]= { "mysql","client",0 };
1223-
1224-static int embedded_server_arg_count= 0;
1225-static char *embedded_server_args[MAX_SERVER_ARGS];
1226-static const char *embedded_server_groups[]=
1227-{ "server", "embedded", "mysql_SERVER", 0 };
1228-
1229-#ifdef HAVE_READLINE
1230-/*
1231- HIST_ENTRY is defined for libedit, but not for the real readline
1232- Need to redefine it for real readline to find it
1233-*/
1234-#if !defined(HAVE_HIST_ENTRY)
1235-typedef struct _hist_entry {
1236- const char *line;
1237- const char *data;
1238-} HIST_ENTRY;
1239-#endif
1240-
1241-extern "C" int add_history(const char *command); /* From readline directory */
1242-extern "C" int read_history(const char *command);
1243-extern "C" int write_history(const char *command);
1244-extern "C" HIST_ENTRY *history_get(int num);
1245-extern "C" int history_length;
1246-static int not_in_history(const char *line);
1247-static void initialize_readline (char *name);
1248-static void fix_history(String *final_command);
1249-#endif
1250-
1251-static COMMANDS *find_command(char *name,char cmd_name);
1252-static bool add_line(String &buffer,char *line,char *in_string,
1253- bool *ml_comment, bool truncated);
1254-static void remove_cntrl(String &buffer);
1255-static void print_table_data(MYSQL_RES *result);
1256-static void print_table_data_html(MYSQL_RES *result);
1257-static void print_table_data_xml(MYSQL_RES *result);
1258-static void print_tab_data(MYSQL_RES *result);
1259-static void print_table_data_vertically(MYSQL_RES *result);
1260-static void print_warnings(void);
1261-static ulong start_timer(void);
1262-static void end_timer(ulong start_time,char *buff);
1263-static void mysql_end_timer(ulong start_time,char *buff);
1264-static void nice_time(double sec,char *buff,bool part_second);
1265-extern "C" sig_handler mysql_end(int sig);
1266-extern "C" sig_handler handle_sigint(int sig);
1267-static unsigned short get_terminal_width();
1268-
1269-
1270-int main(int argc,char *argv[])
1271-{
1272- char buff[80];
1273-
1274- MY_INIT(argv[0]);
1275- DBUG_ENTER("main");
1276- DBUG_PROCESS(argv[0]);
1277-
1278- delimiter_str= delimiter;
1279- default_prompt = my_strdup(getenv("MYSQL_PS1") ?
1280- getenv("MYSQL_PS1") :
1281- "mysql> ",MYF(MY_WME));
1282- current_prompt = my_strdup(default_prompt,MYF(MY_WME));
1283- prompt_counter=0;
1284-
1285- outfile[0]=0; // no (default) outfile
1286- strmov(pager, "stdout"); // the default, if --pager wasn't given
1287- {
1288- char *tmp=getenv("PAGER");
1289- if (tmp && strlen(tmp))
1290- {
1291- default_pager_set= 1;
1292- strmov(default_pager, tmp);
1293- }
1294- }
1295- if (!isatty(0) || !isatty(1))
1296- {
1297- status.batch=1; opt_silent=1;
1298- ignore_errors=0;
1299- }
1300- else
1301- status.add_to_history=1;
1302- status.exit_status=1;
1303-
1304- {
1305- /*
1306- The file descriptor-layer may be out-of-sync with the file-number layer,
1307- so we make sure that "stdout" is really open. If its file is closed then
1308- explicitly close the FD layer.
1309- */
1310- int stdout_fileno_copy;
1311- stdout_fileno_copy= dup(fileno(stdout)); /* Okay if fileno fails. */
1312- if (stdout_fileno_copy == -1)
1313- fclose(stdout);
1314- else
1315- close(stdout_fileno_copy); /* Clean up dup(). */
1316- }
1317-
1318- if (load_defaults("my",load_default_groups,&argc,&argv))
1319- {
1320- my_end(0);
1321- exit(1);
1322- }
1323- defaults_argv=argv;
1324- if (get_options(argc, (char **) argv))
1325- {
1326- free_defaults(defaults_argv);
1327- my_end(0);
1328- exit(1);
1329- }
1330- if (status.batch && !status.line_buff &&
1331- !(status.line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, stdin)))
1332- {
1333- put_info("Can't initialize batch_readline - may be the input source is "
1334- "a directory or a block device.", INFO_ERROR, 0);
1335- free_defaults(defaults_argv);
1336- my_end(0);
1337- exit(1);
1338- }
1339- if (mysql_server_init(embedded_server_arg_count, embedded_server_args,
1340- (char**) embedded_server_groups))
1341- {
1342- put_error(NULL);
1343- free_defaults(defaults_argv);
1344- my_end(0);
1345- exit(1);
1346- }
1347- glob_buffer.realloc(512);
1348- completion_hash_init(&ht, 128);
1349- init_alloc_root(&hash_mem_root, 16384, 0);
1350- bzero((char*) &mysql, sizeof(mysql));
1351- if (sql_connect(current_host,current_db,current_user,opt_password,
1352- opt_silent))
1353- {
1354- quick= 1; // Avoid history
1355- status.exit_status= 1;
1356- mysql_end(-1);
1357- }
1358- if (!status.batch)
1359- ignore_errors=1; // Don't abort monitor
1360-
1361- if (opt_sigint_ignore)
1362- signal(SIGINT, SIG_IGN);
1363- else
1364- signal(SIGINT, handle_sigint); // Catch SIGINT to clean up
1365- signal(SIGQUIT, mysql_end); // Catch SIGQUIT to clean up
1366-
1367- put_info("Welcome to the MySQL monitor. Commands end with ; or \\g.",
1368- INFO_INFO);
1369- sprintf((char*) glob_buffer.ptr(),
1370- "Your MySQL connection id is %lu\nServer version: %s\n",
1371- mysql_thread_id(&mysql), server_version_string(&mysql));
1372- put_info((char*) glob_buffer.ptr(),INFO_INFO);
1373-
1374- put_info(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"), INFO_INFO);
1375-
1376-#ifdef HAVE_READLINE
1377- initialize_readline((char*) my_progname);
1378- if (!status.batch && !quick && !opt_html && !opt_xml)
1379- {
1380- /* read-history from file, default ~/.mysql_history*/
1381- if (getenv("MYSQL_HISTFILE"))
1382- histfile=my_strdup(getenv("MYSQL_HISTFILE"),MYF(MY_WME));
1383- else if (getenv("HOME"))
1384- {
1385- histfile=(char*) my_malloc((uint) strlen(getenv("HOME"))
1386- + (uint) strlen("/.mysql_history")+2,
1387- MYF(MY_WME));
1388- if (histfile)
1389- sprintf(histfile,"%s/.mysql_history",getenv("HOME"));
1390- char link_name[FN_REFLEN];
1391- if (my_readlink(link_name, histfile, 0) == 0 &&
1392- strncmp(link_name, "/dev/null", 10) == 0)
1393- {
1394- /* The .mysql_history file is a symlink to /dev/null, don't use it */
1395- my_free(histfile);
1396- histfile= 0;
1397- }
1398- }
1399-
1400- /* We used to suggest setting MYSQL_HISTFILE=/dev/null. */
1401- if (histfile && strncmp(histfile, "/dev/null", 10) == 0)
1402- histfile= NULL;
1403-
1404- if (histfile && histfile[0])
1405- {
1406- if (verbose)
1407- tee_fprintf(stdout, "Reading history-file %s\n",histfile);
1408- read_history(histfile);
1409- if (!(histfile_tmp= (char*) my_malloc((uint) strlen(histfile) + 5,
1410- MYF(MY_WME))))
1411- {
1412- fprintf(stderr, "Couldn't allocate memory for temp histfile!\n");
1413- exit(1);
1414- }
1415- sprintf(histfile_tmp, "%s.TMP", histfile);
1416- }
1417- }
1418-
1419-#endif
1420-
1421- sprintf(buff, "%s",
1422- "Type 'help;' or '\\h' for help. Type '\\c' to clear the current input statement.\n");
1423- put_info(buff,INFO_INFO);
1424- status.exit_status= read_and_execute(!status.batch);
1425- if (opt_outfile)
1426- end_tee();
1427- mysql_end(0);
1428-#ifndef _lint
1429- DBUG_RETURN(0); // Keep compiler happy
1430-#endif
1431-}
1432-
1433-sig_handler mysql_end(int sig)
1434-{
1435- mysql_close(&mysql);
1436-#ifdef HAVE_READLINE
1437- if (!status.batch && !quick && !opt_html && !opt_xml &&
1438- histfile && histfile[0])
1439- {
1440- /* write-history */
1441- if (verbose)
1442- tee_fprintf(stdout, "Writing history-file %s\n",histfile);
1443- if (!write_history(histfile_tmp))
1444- my_rename(histfile_tmp, histfile, MYF(MY_WME));
1445- }
1446- batch_readline_end(status.line_buff);
1447- completion_hash_free(&ht);
1448- free_root(&hash_mem_root,MYF(0));
1449-
1450-#endif
1451- if (sig >= 0)
1452- put_info(sig ? "Aborted" : "Bye", INFO_RESULT);
1453- glob_buffer.free();
1454- old_buffer.free();
1455- processed_prompt.free();
1456- my_free(server_version);
1457- my_free(opt_password);
1458- my_free(opt_mysql_unix_port);
1459- my_free(histfile);
1460- my_free(histfile_tmp);
1461- my_free(current_db);
1462- my_free(current_host);
1463- my_free(current_user);
1464- my_free(full_username);
1465- my_free(part_username);
1466- my_free(default_prompt);
1467-#ifdef HAVE_SMEM
1468- my_free(shared_memory_base_name);
1469-#endif
1470- my_free(current_prompt);
1471- while (embedded_server_arg_count > 1)
1472- my_free(embedded_server_args[--embedded_server_arg_count]);
1473- mysql_server_end();
1474- free_defaults(defaults_argv);
1475- my_end(my_end_arg);
1476- exit(status.exit_status);
1477-}
1478-
1479-
1480-/*
1481- This function handles sigint calls
1482- If query is in process, kill query
1483- no query in process, terminate like previous behavior
1484- */
1485-sig_handler handle_sigint(int sig)
1486-{
1487- char kill_buffer[40];
1488- MYSQL *kill_mysql= NULL;
1489-
1490- /* terminate if no query being executed, or we already tried interrupting */
1491- /* terminate if no query being executed, or we already tried interrupting */
1492- if (!executing_query || (interrupted_query == 2))
1493- {
1494- tee_fprintf(stdout, "Ctrl-C -- exit!\n");
1495- goto err;
1496- }
1497-
1498- kill_mysql= mysql_init(kill_mysql);
1499- if (!mysql_real_connect(kill_mysql,current_host, current_user, opt_password,
1500- "", opt_mysql_port, opt_mysql_unix_port,0))
1501- {
1502- tee_fprintf(stdout, "Ctrl-C -- sorry, cannot connect to server to kill query, giving up ...\n");
1503- goto err;
1504- }
1505-
1506- interrupted_query++;
1507-
1508- /* mysqld < 5 does not understand KILL QUERY, skip to KILL CONNECTION */
1509- if ((interrupted_query == 1) && (mysql_get_server_version(&mysql) < 50000))
1510- interrupted_query= 2;
1511-
1512- /* kill_buffer is always big enough because max length of %lu is 15 */
1513- sprintf(kill_buffer, "KILL %s%lu",
1514- (interrupted_query == 1) ? "QUERY " : "",
1515- mysql_thread_id(&mysql));
1516- tee_fprintf(stdout, "Ctrl-C -- sending \"%s\" to server ...\n", kill_buffer);
1517- mysql_real_query(kill_mysql, kill_buffer, (uint) strlen(kill_buffer));
1518- mysql_close(kill_mysql);
1519- tee_fprintf(stdout, "Ctrl-C -- query aborted.\n");
1520-
1521- return;
1522-
1523-err:
1524-#ifdef _WIN32
1525- /*
1526- When SIGINT is raised on Windows, the OS creates a new thread to handle the
1527- interrupt. Once that thread completes, the main thread continues running
1528- only to find that it's resources have already been free'd when the sigint
1529- handler called mysql_end().
1530- */
1531- mysql_thread_end();
1532- return;
1533-#else
1534- mysql_end(sig);
1535-#endif
1536-}
1537-
1538-
1539-unsigned short get_terminal_width()
1540-{
1541-#if defined(HAVE_TERMIOS_H) && defined(GWINSZ_IN_SYS_IOCTL)
1542- struct winsize window_size;
1543-
1544- if (ioctl(fileno(stdin), TIOCGWINSZ, &window_size) == 0)
1545- return window_size.ws_col;
1546-#endif
1547- return 80;
1548-}
1549-
1550-static struct my_option my_long_options[] =
1551-{
1552- {"help", '?', "Display this help and exit.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
1553- 0, 0, 0, 0, 0},
1554- {"help", 'I', "Synonym for -?", 0, 0, 0, GET_NO_ARG, NO_ARG, 0,
1555- 0, 0, 0, 0, 0},
1556- {"auto-rehash", OPT_AUTO_REHASH,
1557- "Enable automatic rehashing. One doesn't need to use 'rehash' to get table "
1558- "and field completion, but startup and reconnecting may take a longer time. "
1559- "Disable with --disable-auto-rehash.",
1560- &opt_rehash, &opt_rehash, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0,
1561- 0, 0},
1562- {"no-auto-rehash", 'A',
1563- "No automatic rehashing. One has to use 'rehash' to get table and field "
1564- "completion. This gives a quicker start of mysql and disables rehashing "
1565- "on reconnect.",
1566- 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1567- {"auto-vertical-output", OPT_AUTO_VERTICAL_OUTPUT,
1568- "Automatically switch to vertical output mode if the result is wider "
1569- "than the terminal width.",
1570- &auto_vertical_output, &auto_vertical_output, 0, GET_BOOL, NO_ARG, 0,
1571- 0, 0, 0, 0, 0},
1572- {"batch", 'B',
1573- "Don't use history file. Disable interactive behavior. (Enables --silent.)",
1574- 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1575- {"character-sets-dir", OPT_CHARSETS_DIR,
1576- "Directory for character set files.", &charsets_dir,
1577- &charsets_dir, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1578- {"column-type-info", OPT_COLUMN_TYPES, "Display column type information.",
1579- &column_types_flag, &column_types_flag,
1580- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1581- {"comments", 'c', "Preserve comments. Send comments to the server."
1582- " The default is --skip-comments (discard comments), enable with --comments.",
1583- &preserve_comments, &preserve_comments,
1584- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1585- {"compress", 'C', "Use compression in server/client protocol.",
1586- &opt_compress, &opt_compress, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1587- 0, 0, 0},
1588-#ifdef DBUG_OFF
1589- {"debug", '#', "This is a non-debug version. Catch this and exit.",
1590- 0,0, 0, GET_DISABLED, OPT_ARG, 0, 0, 0, 0, 0, 0},
1591-#else
1592- {"debug", '#', "Output debug log.", &default_dbug_option,
1593- &default_dbug_option, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1594-#endif
1595- {"debug-check", OPT_DEBUG_CHECK, "Check memory and open file usage at exit.",
1596- &debug_check_flag, &debug_check_flag, 0,
1597- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1598- {"debug-info", 'T', "Print some debug info at exit.", &debug_info_flag,
1599- &debug_info_flag, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1600- {"database", 'D', "Database to use.", &current_db,
1601- &current_db, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1602- {"default-character-set", OPT_DEFAULT_CHARSET,
1603- "Set the default character set.", &default_charset,
1604- &default_charset, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1605- {"delimiter", OPT_DELIMITER, "Delimiter to be used.", &delimiter_str,
1606- &delimiter_str, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1607- {"enable_cleartext_plugin", OPT_ENABLE_CLEARTEXT_PLUGIN,
1608- "Enable/disable the clear text authentication plugin.",
1609- &opt_enable_cleartext_plugin, &opt_enable_cleartext_plugin,
1610- 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
1611- {"execute", 'e', "Execute command and quit. (Disables --force and history file.)", 0,
1612- 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1613- {"vertical", 'E', "Print the output of a query (rows) vertically.",
1614- &vertical, &vertical, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0,
1615- 0},
1616- {"force", 'f', "Continue even if we get an SQL error.",
1617- &ignore_errors, &ignore_errors, 0, GET_BOOL, NO_ARG, 0, 0,
1618- 0, 0, 0, 0},
1619- {"named-commands", 'G',
1620- "Enable named commands. Named commands mean this program's internal "
1621- "commands; see mysql> help . When enabled, the named commands can be "
1622- "used from any line of the query, otherwise only from the first line, "
1623- "before an enter. Disable with --disable-named-commands. This option "
1624- "is disabled by default.",
1625- &named_cmds, &named_cmds, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0,
1626- 0, 0},
1627- {"ignore-spaces", 'i', "Ignore space after function names.",
1628- &ignore_spaces, &ignore_spaces, 0, GET_BOOL, NO_ARG, 0, 0,
1629- 0, 0, 0, 0},
1630- {"init-command", OPT_INIT_COMMAND,
1631- "SQL Command to execute when connecting to MySQL server. Will "
1632- "automatically be re-executed when reconnecting.",
1633- &opt_init_command, &opt_init_command, 0,
1634- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1635- {"local-infile", OPT_LOCAL_INFILE, "Enable/disable LOAD DATA LOCAL INFILE.",
1636- &opt_local_infile, &opt_local_infile, 0, GET_BOOL, OPT_ARG, 0, 0, 0, 0, 0, 0},
1637- {"no-beep", 'b', "Turn off beep on error.", &opt_nobeep,
1638- &opt_nobeep, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1639- {"host", 'h', "Connect to host.", &current_host,
1640- &current_host, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1641- {"html", 'H', "Produce HTML output.", &opt_html, &opt_html,
1642- 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1643- {"xml", 'X', "Produce XML output.", &opt_xml, &opt_xml, 0,
1644- GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1645- {"line-numbers", OPT_LINE_NUMBERS, "Write line numbers for errors.",
1646- &line_numbers, &line_numbers, 0, GET_BOOL,
1647- NO_ARG, 1, 0, 0, 0, 0, 0},
1648- {"skip-line-numbers", 'L', "Don't write line number for errors.", 0, 0, 0, GET_NO_ARG,
1649- NO_ARG, 0, 0, 0, 0, 0, 0},
1650- {"no-remove-eol-carret", OPT_NO_REMOVE_EOL_CARRET, "Do not remove \\r before \\n in batch mode",
1651- (uchar**)&opt_no_remove_eol_carret , (uchar**)&opt_no_remove_eol_carret, 0,
1652- GET_BOOL,
1653- NO_ARG, 0, 0, 0, 0, 0, 0},
1654- {"unbuffered", 'n', "Flush buffer after each query.", &unbuffered,
1655- &unbuffered, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1656- {"column-names", OPT_COLUMN_NAMES, "Write column names in results.",
1657- &column_names, &column_names, 0, GET_BOOL,
1658- NO_ARG, 1, 0, 0, 0, 0, 0},
1659- {"skip-column-names", 'N',
1660- "Don't write column names in results.",
1661- 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1662- {"sigint-ignore", OPT_SIGINT_IGNORE, "Ignore SIGINT (CTRL-C).",
1663- &opt_sigint_ignore, &opt_sigint_ignore, 0, GET_BOOL,
1664- NO_ARG, 0, 0, 0, 0, 0, 0},
1665- {"one-database", 'o',
1666- "Ignore statements except those that occur while the default "
1667- "database is the one named at the command line.",
1668- 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1669-#ifdef USE_POPEN
1670- {"pager", OPT_PAGER,
1671- "Pager to use to display results. If you don't supply an option, the "
1672- "default pager is taken from your ENV variable PAGER. Valid pagers are "
1673- "less, more, cat [> filename], etc. See interactive help (\\h) also. "
1674- "This option does not work in batch mode. Disable with --disable-pager. "
1675- "This option is disabled by default.",
1676- 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1677-#endif
1678- {"password", 'p',
1679- "Password to use when connecting to server. If password is not given it's asked from the tty.",
1680- 0, 0, 0, GET_STR, OPT_ARG, 0, 0, 0, 0, 0, 0},
1681-#ifdef __WIN__
1682- {"pipe", 'W', "Use named pipes to connect to server.", 0, 0, 0, GET_NO_ARG,
1683- NO_ARG, 0, 0, 0, 0, 0, 0},
1684-#endif
1685- {"port", 'P', "Port number to use for connection or 0 for default to, in "
1686- "order of preference, my.cnf, $MYSQL_TCP_PORT, "
1687-#if MYSQL_PORT_DEFAULT == 0
1688- "/etc/services, "
1689-#endif
1690- "built-in default (" STRINGIFY_ARG(MYSQL_PORT) ").",
1691- &opt_mysql_port,
1692- &opt_mysql_port, 0, GET_UINT, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1693- {"prompt", OPT_PROMPT, "Set the mysql prompt to this value.",
1694- &current_prompt, &current_prompt, 0, GET_STR_ALLOC,
1695- REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1696- {"protocol", OPT_MYSQL_PROTOCOL, "The protocol to use for connection (tcp, socket, pipe, memory).",
1697- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1698- {"quick", 'q',
1699- "Don't cache result, print it row by row. This may slow down the server "
1700- "if the output is suspended. Doesn't use history file.",
1701- &quick, &quick, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1702- {"raw", 'r', "Write fields without conversion. Used with --batch.",
1703- &opt_raw_data, &opt_raw_data, 0, GET_BOOL, NO_ARG, 0, 0, 0,
1704- 0, 0, 0},
1705- {"reconnect", OPT_RECONNECT, "Reconnect if the connection is lost. Disable "
1706- "with --disable-reconnect. This option is enabled by default.",
1707- &opt_reconnect, &opt_reconnect, 0, GET_BOOL, NO_ARG, 1, 0, 0, 0, 0, 0},
1708- {"silent", 's', "Be more silent. Print results with a tab as separator, "
1709- "each row on new line.", 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1710-#ifdef HAVE_SMEM
1711- {"shared-memory-base-name", OPT_SHARED_MEMORY_BASE_NAME,
1712- "Base name of shared memory.", &shared_memory_base_name,
1713- &shared_memory_base_name, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1714-#endif
1715- {"socket", 'S', "The socket file to use for connection.",
1716- &opt_mysql_unix_port, &opt_mysql_unix_port, 0, GET_STR_ALLOC,
1717- REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1718-#include "sslopt-longopts.h"
1719- {"table", 't', "Output in table format.", &output_tables,
1720- &output_tables, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1721- {"tee", OPT_TEE,
1722- "Append everything into outfile. See interactive help (\\h) also. "
1723- "Does not work in batch mode. Disable with --disable-tee. "
1724- "This option is disabled by default.",
1725- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1726-#ifndef DONT_ALLOW_USER_CHANGE
1727- {"user", 'u', "User for login if not current user.", &current_user,
1728- &current_user, 0, GET_STR_ALLOC, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1729-#endif
1730- {"safe-updates", 'U', "Only allow UPDATE and DELETE that uses keys.",
1731- &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1732- 0, 0, 0, 0},
1733- {"i-am-a-dummy", 'U', "Synonym for option --safe-updates, -U.",
1734- &safe_updates, &safe_updates, 0, GET_BOOL, NO_ARG, 0, 0,
1735- 0, 0, 0, 0},
1736- {"verbose", 'v', "Write more. (-v -v -v gives the table output format).", 0,
1737- 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1738- {"version", 'V', "Output version information and exit.", 0, 0, 0,
1739- GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0},
1740- {"wait", 'w', "Wait and retry if connection is down.", 0, 0, 0, GET_NO_ARG,
1741- NO_ARG, 0, 0, 0, 0, 0, 0},
1742- {"connect_timeout", OPT_CONNECT_TIMEOUT,
1743- "Number of seconds before connection timeout.",
1744- &opt_connect_timeout, &opt_connect_timeout, 0, GET_ULONG, REQUIRED_ARG,
1745- 0, 0, 3600*12, 0, 0, 0},
1746- {"max_allowed_packet", OPT_MAX_ALLOWED_PACKET,
1747- "The maximum packet length to send to or receive from server.",
1748- &opt_max_allowed_packet, &opt_max_allowed_packet, 0,
1749- GET_ULONG, REQUIRED_ARG, 16 *1024L*1024L, 4096,
1750- (longlong) 2*1024L*1024L*1024L, MALLOC_OVERHEAD, 1024, 0},
1751- {"net_buffer_length", OPT_NET_BUFFER_LENGTH,
1752- "The buffer size for TCP/IP and socket communication.",
1753- &opt_net_buffer_length, &opt_net_buffer_length, 0, GET_ULONG,
1754- REQUIRED_ARG, 16384, 1024, 512*1024*1024L, MALLOC_OVERHEAD, 1024, 0},
1755- {"select_limit", OPT_SELECT_LIMIT,
1756- "Automatic limit for SELECT when using --safe-updates.",
1757- &select_limit, &select_limit, 0, GET_ULONG, REQUIRED_ARG, 1000L,
1758- 1, ULONG_MAX, 0, 1, 0},
1759- {"max_join_size", OPT_MAX_JOIN_SIZE,
1760- "Automatic limit for rows in a join when using --safe-updates.",
1761- &max_join_size, &max_join_size, 0, GET_ULONG, REQUIRED_ARG, 1000000L,
1762- 1, ULONG_MAX, 0, 1, 0},
1763- {"secure-auth", OPT_SECURE_AUTH, "Refuse client connecting to server if it"
1764- " uses old (pre-4.1.1) protocol.", &opt_secure_auth,
1765- &opt_secure_auth, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0},
1766- {"server-arg", OPT_SERVER_ARG, "Send embedded server this as a parameter.",
1767- 0, 0, 0, GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1768- {"show-warnings", OPT_SHOW_WARNINGS, "Show warnings after every statement.",
1769- &show_warnings, &show_warnings, 0, GET_BOOL, NO_ARG,
1770- 0, 0, 0, 0, 0, 0},
1771-#ifndef __WIN__
1772- {"syslog", OPT_SYSLOG, "Logs all queries to syslog", 0, 0, 0, GET_NO_ARG,
1773- NO_ARG, 0, 0, 0, 0, 0, 0},
1774-#endif
1775- {"plugin_dir", OPT_PLUGIN_DIR, "Directory for client-side plugins.",
1776- &opt_plugin_dir, &opt_plugin_dir, 0,
1777- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1778- {"default_auth", OPT_DEFAULT_AUTH,
1779- "Default authentication client-side plugin to use.",
1780- &opt_default_auth, &opt_default_auth, 0,
1781- GET_STR, REQUIRED_ARG, 0, 0, 0, 0, 0, 0},
1782- { 0, 0, 0, 0, 0, 0, GET_NO_ARG, NO_ARG, 0, 0, 0, 0, 0, 0}
1783-};
1784-
1785-
1786-static void usage(int version)
1787-{
1788-#if defined(USE_LIBEDIT_INTERFACE)
1789- const char* readline= "";
1790-#else
1791- const char* readline= "readline";
1792-#endif
1793-
1794-#ifdef HAVE_READLINE
1795- printf("%s Ver %s Distrib %s, for %s (%s) using %s %s\n",
1796- my_progname, VER, MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE,
1797- readline, rl_library_version);
1798-#else
1799- printf("%s Ver %s Distrib %s, for %s (%s)\n", my_progname, VER,
1800- MYSQL_SERVER_VERSION, SYSTEM_TYPE, MACHINE_TYPE);
1801-#endif
1802-
1803- if (version)
1804- return;
1805- puts(ORACLE_WELCOME_COPYRIGHT_NOTICE("2000"));
1806- printf("Usage: %s [OPTIONS] [database]\n", my_progname);
1807- my_print_help(my_long_options);
1808- print_defaults("my", load_default_groups);
1809- my_print_variables(my_long_options);
1810-}
1811-
1812-
1813-my_bool
1814-get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
1815- char *argument)
1816-{
1817- switch(optid) {
1818- case OPT_CHARSETS_DIR:
1819- strmake(mysql_charsets_dir, argument, sizeof(mysql_charsets_dir) - 1);
1820- charsets_dir = mysql_charsets_dir;
1821- break;
1822- case OPT_DELIMITER:
1823- if (argument == disabled_my_option)
1824- {
1825- strmov(delimiter, DEFAULT_DELIMITER);
1826- }
1827- else
1828- {
1829- /* Check that delimiter does not contain a backslash */
1830- if (!strstr(argument, "\\"))
1831- {
1832- strmake(delimiter, argument, sizeof(delimiter) - 1);
1833- }
1834- else
1835- {
1836- put_info("DELIMITER cannot contain a backslash character", INFO_ERROR);
1837- return 0;
1838- }
1839- }
1840- delimiter_length= (uint)strlen(delimiter);
1841- delimiter_str= delimiter;
1842- break;
1843- case OPT_LOCAL_INFILE:
1844- using_opt_local_infile=1;
1845- break;
1846- case OPT_ENABLE_CLEARTEXT_PLUGIN:
1847- using_opt_enable_cleartext_plugin= TRUE;
1848- break;
1849- case OPT_TEE:
1850- if (argument == disabled_my_option)
1851- {
1852- if (opt_outfile)
1853- end_tee();
1854- }
1855- else
1856- init_tee(argument);
1857- break;
1858- case OPT_PAGER:
1859- if (argument == disabled_my_option)
1860- opt_nopager= 1;
1861- else
1862- {
1863- opt_nopager= 0;
1864- if (argument && strlen(argument))
1865- {
1866- default_pager_set= 1;
1867- strmake(pager, argument, sizeof(pager) - 1);
1868- strmov(default_pager, pager);
1869- }
1870- else if (default_pager_set)
1871- strmov(pager, default_pager);
1872- else
1873- opt_nopager= 1;
1874- }
1875- break;
1876- case OPT_MYSQL_PROTOCOL:
1877-#ifndef EMBEDDED_LIBRARY
1878- opt_protocol= find_type_or_exit(argument, &sql_protocol_typelib,
1879- opt->name);
1880-#endif
1881- break;
1882-#ifndef __WIN__
1883- case OPT_SYSLOG:
1884- opt_syslog = 1;
1885- break;
1886-#endif
1887- case OPT_SERVER_ARG:
1888-#ifdef EMBEDDED_LIBRARY
1889- /*
1890- When the embedded server is being tested, the client needs to be
1891- able to pass command-line arguments to the embedded server so it can
1892- locate the language files and data directory.
1893- */
1894- if (!embedded_server_arg_count)
1895- {
1896- embedded_server_arg_count= 1;
1897- embedded_server_args[0]= (char*) "";
1898- }
1899- if (embedded_server_arg_count == MAX_SERVER_ARGS-1 ||
1900- !(embedded_server_args[embedded_server_arg_count++]=
1901- my_strdup(argument, MYF(MY_FAE))))
1902- {
1903- put_info("Can't use server argument", INFO_ERROR);
1904- return 0;
1905- }
1906-#else /*EMBEDDED_LIBRARY */
1907- printf("WARNING: --server-arg option not supported in this configuration.\n");
1908-#endif
1909- break;
1910- case 'A':
1911- opt_rehash= 0;
1912- break;
1913- case 'N':
1914- column_names= 0;
1915- break;
1916- case 'e':
1917- status.batch= 1;
1918- status.add_to_history= 0;
1919- if (!status.line_buff)
1920- ignore_errors= 0; // do it for the first -e only
1921- if (!(status.line_buff= batch_readline_command(status.line_buff, argument)))
1922- return 1;
1923- break;
1924- case 'o':
1925- if (argument == disabled_my_option)
1926- one_database= 0;
1927- else
1928- one_database= skip_updates= 1;
1929- break;
1930- case 'p':
1931- if (argument == disabled_my_option)
1932- argument= (char*) ""; // Don't require password
1933- if (argument)
1934- {
1935- char *start= argument;
1936- my_free(opt_password);
1937- opt_password= my_strdup(argument, MYF(MY_FAE));
1938- while (*argument) *argument++= 'x'; // Destroy argument
1939- if (*start)
1940- start[1]=0 ;
1941- tty_password= 0;
1942- }
1943- else
1944- tty_password= 1;
1945- break;
1946- case '#':
1947- DBUG_PUSH(argument ? argument : default_dbug_option);
1948- debug_info_flag= 1;
1949- break;
1950- case 's':
1951- if (argument == disabled_my_option)
1952- opt_silent= 0;
1953- else
1954- opt_silent++;
1955- break;
1956- case 'v':
1957- if (argument == disabled_my_option)
1958- verbose= 0;
1959- else
1960- verbose++;
1961- break;
1962- case 'B':
1963- status.batch= 1;
1964- status.add_to_history= 0;
1965- set_if_bigger(opt_silent,1); // more silent
1966- break;
1967- case 'W':
1968-#ifdef __WIN__
1969- opt_protocol = MYSQL_PROTOCOL_PIPE;
1970-#endif
1971- break;
1972-#include <sslopt-case.h>
1973- case 'V':
1974- usage(1);
1975- exit(0);
1976- case 'I':
1977- case '?':
1978- usage(0);
1979- exit(0);
1980- }
1981- return 0;
1982-}
1983-
1984-
1985-static int get_options(int argc, char **argv)
1986-{
1987- char *tmp, *pagpoint;
1988- int ho_error;
1989- MYSQL_PARAMETERS *mysql_params= mysql_get_parameters();
1990-
1991- tmp= (char *) getenv("MYSQL_HOST");
1992- if (tmp)
1993- current_host= my_strdup(tmp, MYF(MY_WME));
1994-
1995- pagpoint= getenv("PAGER");
1996- if (!((char*) (pagpoint)))
1997- {
1998- strmov(pager, "stdout");
1999- opt_nopager= 1;
2000- }
2001- else
2002- strmov(pager, pagpoint);
2003- strmov(default_pager, pager);
2004-
2005- opt_max_allowed_packet= *mysql_params->p_max_allowed_packet;
2006- opt_net_buffer_length= *mysql_params->p_net_buffer_length;
2007-
2008- if ((ho_error=handle_options(&argc, &argv, my_long_options, get_one_option)))
2009- exit(ho_error);
2010-
2011- *mysql_params->p_max_allowed_packet= opt_max_allowed_packet;
2012- *mysql_params->p_net_buffer_length= opt_net_buffer_length;
2013-
2014- if (status.batch) /* disable pager and outfile in this case */
2015- {
2016- strmov(default_pager, "stdout");
2017- strmov(pager, "stdout");
2018- opt_nopager= 1;
2019- default_pager_set= 0;
2020- opt_outfile= 0;
2021- opt_reconnect= 0;
2022- connect_flag= 0; /* Not in interactive mode */
2023- }
2024-
2025- if (argc > 1)
2026- {
2027- usage(0);
2028- exit(1);
2029- }
2030- if (argc == 1)
2031- {
2032- skip_updates= 0;
2033- my_free(current_db);
2034- current_db= my_strdup(*argv, MYF(MY_WME));
2035- }
2036- if (tty_password)
2037- opt_password= get_tty_password(NullS);
2038- if (debug_info_flag)
2039- my_end_arg= MY_CHECK_ERROR | MY_GIVE_INFO;
2040- if (debug_check_flag)
2041- my_end_arg= MY_CHECK_ERROR;
2042-
2043- if (ignore_spaces)
2044- connect_flag|= CLIENT_IGNORE_SPACE;
2045-
2046- return(0);
2047-}
2048-
2049-static int read_and_execute(bool interactive)
2050-{
2051-#if defined(__WIN__)
2052- String tmpbuf;
2053- String buffer;
2054-#endif
2055-
2056- char *line= NULL;
2057- char in_string=0;
2058- ulong line_number=0;
2059- bool ml_comment= 0;
2060- COMMANDS *com;
2061- status.exit_status=1;
2062-
2063- for (;;)
2064- {
2065- if (!interactive)
2066- {
2067- line=batch_readline(status.line_buff);
2068- /*
2069- Skip UTF8 Byte Order Marker (BOM) 0xEFBBBF.
2070- Editors like "notepad" put this marker in
2071- the very beginning of a text file when
2072- you save the file using "Unicode UTF-8" format.
2073- */
2074- if (line && !line_number &&
2075- (uchar) line[0] == 0xEF &&
2076- (uchar) line[1] == 0xBB &&
2077- (uchar) line[2] == 0xBF)
2078- line+= 3;
2079- line_number++;
2080- if (!glob_buffer.length())
2081- status.query_start_line=line_number;
2082- }
2083- else
2084- {
2085- char *prompt= (char*) (ml_comment ? " /*> " :
2086- glob_buffer.is_empty() ? construct_prompt() :
2087- !in_string ? " -> " :
2088- in_string == '\'' ?
2089- " '> " : (in_string == '`' ?
2090- " `> " :
2091- " \"> "));
2092- if (opt_outfile && glob_buffer.is_empty())
2093- fflush(OUTFILE);
2094-
2095-#if defined(__WIN__)
2096- tee_fputs(prompt, stdout);
2097- if (!tmpbuf.is_alloced())
2098- tmpbuf.alloc(65535);
2099- tmpbuf.length(0);
2100- buffer.length(0);
2101- size_t clen;
2102- do
2103- {
2104- line= my_cgets((char*)tmpbuf.ptr(), tmpbuf.alloced_length()-1, &clen);
2105- buffer.append(line, clen);
2106- /*
2107- if we got buffer fully filled than there is a chance that
2108- something else is still in console input buffer
2109- */
2110- } while (tmpbuf.alloced_length() <= clen);
2111- /*
2112- An empty line is returned from my_cgets when there's error reading :
2113- Ctrl-c for example
2114- */
2115- if (line)
2116- line= buffer.c_ptr();
2117-#else
2118- if (opt_outfile)
2119- fputs(prompt, OUTFILE);
2120- /*
2121- free the previous entered line.
2122- Note: my_free() cannot be used here as the memory was allocated under
2123- the readline/libedit library.
2124- */
2125- if (line)
2126- free(line);
2127- line= readline(prompt);
2128-#endif /* defined(__WIN__) */
2129-
2130- /*
2131- When Ctrl+d or Ctrl+z is pressed, the line may be NULL on some OS
2132- which may cause coredump.
2133- */
2134- if (opt_outfile && line)
2135- fprintf(OUTFILE, "%s\n", line);
2136- }
2137- // End of file or system error
2138- if (!line)
2139- {
2140- if (status.line_buff && status.line_buff->error)
2141- status.exit_status= 1;
2142- else
2143- status.exit_status= 0;
2144- break;
2145- }
2146-
2147- /*
2148- Check if line is a mysql command line
2149- (We want to allow help, print and clear anywhere at line start
2150- */
2151- if ((named_cmds || glob_buffer.is_empty())
2152- && !ml_comment && !in_string && (com=find_command(line,0)))
2153- {
2154- if ((*com->func)(&glob_buffer,line) > 0)
2155- break;
2156- if (glob_buffer.is_empty()) // If buffer was emptied
2157- in_string=0;
2158-#ifdef HAVE_READLINE
2159- if (interactive && status.add_to_history && not_in_history(line))
2160- add_history(line);
2161-#endif
2162- continue;
2163- }
2164- if (add_line(glob_buffer, line, &in_string, &ml_comment,
2165- status.line_buff ? status.line_buff->truncated : 0))
2166- break;
2167- }
2168- /* if in batch mode, send last query even if it doesn't end with \g or go */
2169-
2170- if (!interactive && !status.exit_status)
2171- {
2172- remove_cntrl(glob_buffer);
2173- if (!glob_buffer.is_empty())
2174- {
2175- status.exit_status=1;
2176- if (com_go(&glob_buffer,line) <= 0)
2177- status.exit_status=0;
2178- }
2179- }
2180-
2181-#if defined(__WIN__)
2182- buffer.free();
2183- tmpbuf.free();
2184-#else
2185- if (interactive)
2186- /*
2187- free the last entered line.
2188- Note: my_free() cannot be used here as the memory was allocated under
2189- the readline/libedit library.
2190- */
2191- free(line);
2192-#endif
2193-
2194-
2195- return status.exit_status;
2196-}
2197-
2198-
2199-static COMMANDS *find_command(char *name,char cmd_char)
2200-{
2201- uint len;
2202- char *end;
2203- DBUG_ENTER("find_command");
2204- DBUG_PRINT("enter",("name: '%s' char: %d", name ? name : "NULL", cmd_char));
2205-
2206- if (!name)
2207- {
2208- len=0;
2209- end=0;
2210- }
2211- else
2212- {
2213- while (my_isspace(charset_info,*name))
2214- name++;
2215- /*
2216- If there is an \\g in the row or if the row has a delimiter but
2217- this is not a delimiter command, let add_line() take care of
2218- parsing the row and calling find_command()
2219- */
2220- if (strstr(name, "\\g") || (strstr(name, delimiter) &&
2221- !(strlen(name) >= 9 &&
2222- !my_strnncoll(&my_charset_latin1,
2223- (uchar*) name, 9,
2224- (const uchar*) "delimiter",
2225- 9))))
2226- DBUG_RETURN((COMMANDS *) 0);
2227- if ((end=strcont(name," \t")))
2228- {
2229- len=(uint) (end - name);
2230- while (my_isspace(charset_info,*end))
2231- end++;
2232- if (!*end)
2233- end=0; // no arguments to function
2234- }
2235- else
2236- len=(uint) strlen(name);
2237- }
2238-
2239- for (uint i= 0; commands[i].name; i++)
2240- {
2241- if (commands[i].func &&
2242- ((name &&
2243- !my_strnncoll(&my_charset_latin1, (uchar*)name, len,
2244- (uchar*)commands[i].name,len) &&
2245- !commands[i].name[len] &&
2246- (!end || (end && commands[i].takes_params))) ||
2247- (!name && commands[i].cmd_char == cmd_char)))
2248- {
2249- DBUG_PRINT("exit",("found command: %s", commands[i].name));
2250- DBUG_RETURN(&commands[i]);
2251- }
2252- }
2253- DBUG_RETURN((COMMANDS *) 0);
2254-}
2255-
2256-void write_syslog(String *line){
2257-#ifndef __WIN__
2258- uint length= line->length();
2259- uint chunk_len= min(MAX_SYSLOG_MESSAGE, length);
2260- char *ptr= line->c_ptr_safe();
2261- char buff[MAX_SYSLOG_MESSAGE + 1];
2262-
2263- for (;
2264- length;
2265- length-= chunk_len, ptr+= chunk_len, chunk_len= min(MAX_SYSLOG_MESSAGE,
2266- length))
2267- {
2268- char *str;
2269- if (length == chunk_len)
2270- str= ptr; // last chunk => skip copy
2271- else
2272- {
2273- memcpy(buff, ptr, chunk_len);
2274- buff[chunk_len]= '\0';
2275- str= buff;
2276- }
2277- syslog(LOG_INFO,
2278- "SYSTEM_USER:'%s', MYSQL_USER:'%s', CONNECTION_ID:%lu, "
2279- "DB_SERVER:'%s', DB:'%s', QUERY:'%s'",
2280- getenv("SUDO_USER") ? getenv("SUDO_USER") :
2281- getenv("USER") ? getenv("USER") : "--",
2282- current_user ? current_user : "--",
2283- mysql_thread_id(&mysql),
2284- current_host ? current_host : "--",
2285- current_db ? current_db : "--",
2286- str);
2287- }
2288-#endif
2289-}
2290-
2291-static bool add_line(String &buffer,char *line,char *in_string,
2292- bool *ml_comment, bool truncated)
2293-{
2294- uchar inchar;
2295- char buff[80], *pos, *out;
2296- COMMANDS *com;
2297- bool need_space= 0;
2298- bool ss_comment= 0;
2299- DBUG_ENTER("add_line");
2300-
2301- if (!line[0] && buffer.is_empty())
2302- DBUG_RETURN(0);
2303-#ifdef HAVE_READLINE
2304- if (status.add_to_history && line[0] && not_in_history(line))
2305- add_history(line);
2306-#endif
2307- char *end_of_line=line+(uint) strlen(line);
2308-
2309- for (pos=out=line ; (inchar= (uchar) *pos) ; pos++)
2310- {
2311- if (!preserve_comments)
2312- {
2313- // Skip spaces at the beginning of a statement
2314- if (my_isspace(charset_info,inchar) && (out == line) &&
2315- buffer.is_empty())
2316- continue;
2317- }
2318-
2319-#ifdef USE_MB
2320- // Accept multi-byte characters as-is
2321- int length;
2322- if (use_mb(charset_info) &&
2323- (length= my_ismbchar(charset_info, pos, end_of_line)))
2324- {
2325- if (!*ml_comment || preserve_comments)
2326- {
2327- while (length--)
2328- *out++ = *pos++;
2329- pos--;
2330- }
2331- else
2332- pos+= length - 1;
2333- continue;
2334- }
2335-#endif
2336- if (!*ml_comment && inchar == '\\' &&
2337- !(*in_string &&
2338- (mysql.server_status & SERVER_STATUS_NO_BACKSLASH_ESCAPES)))
2339- {
2340- // Found possbile one character command like \c
2341-
2342- if (!(inchar = (uchar) *++pos))
2343- break; // readline adds one '\'
2344- if (*in_string || inchar == 'N') // \N is short for NULL
2345- { // Don't allow commands in string
2346- *out++='\\';
2347- *out++= (char) inchar;
2348- continue;
2349- }
2350- if ((com=find_command(NullS,(char) inchar)))
2351- {
2352- // Flush previously accepted characters
2353- if (out != line)
2354- {
2355- buffer.append(line, (uint) (out-line));
2356- out= line;
2357- }
2358-
2359- if ((*com->func)(&buffer,pos-1) > 0)
2360- DBUG_RETURN(1); // Quit
2361- if (com->takes_params)
2362- {
2363- if (ss_comment)
2364- {
2365- /*
2366- If a client-side macro appears inside a server-side comment,
2367- discard all characters in the comment after the macro (that is,
2368- until the end of the comment rather than the next delimiter)
2369- */
2370- for (pos++; *pos && (*pos != '*' || *(pos + 1) != '/'); pos++)
2371- ;
2372- pos--;
2373- }
2374- else
2375- {
2376- for (pos++ ;
2377- *pos && (*pos != *delimiter ||
2378- !is_prefix(pos + 1, delimiter + 1)) ; pos++)
2379- ; // Remove parameters
2380- if (!*pos)
2381- pos--;
2382- else
2383- pos+= delimiter_length - 1; // Point at last delim char
2384- }
2385- }
2386- }
2387- else
2388- {
2389- sprintf(buff,"Unknown command '\\%c'.",inchar);
2390- if (put_info(buff,INFO_ERROR) > 0)
2391- DBUG_RETURN(1);
2392- *out++='\\';
2393- *out++=(char) inchar;
2394- continue;
2395- }
2396- }
2397- else if (!*ml_comment && !*in_string && is_prefix(pos, delimiter))
2398- {
2399- // Found a statement. Continue parsing after the delimiter
2400- pos+= delimiter_length;
2401-
2402- if (preserve_comments)
2403- {
2404- while (my_isspace(charset_info, *pos))
2405- *out++= *pos++;
2406- }
2407- // Flush previously accepted characters
2408- if (out != line)
2409- {
2410- buffer.append(line, (uint32) (out-line));
2411- out= line;
2412- }
2413-
2414- if (preserve_comments && ((*pos == '#') ||
2415- ((*pos == '-') &&
2416- (pos[1] == '-') &&
2417- my_isspace(charset_info, pos[2]))))
2418- {
2419- // Add trailing single line comments to this statement
2420- buffer.append(pos);
2421- pos+= strlen(pos);
2422- }
2423-
2424- pos--;
2425-
2426- if ((com= find_command(buffer.c_ptr(), 0)))
2427- {
2428-
2429- if ((*com->func)(&buffer, buffer.c_ptr()) > 0)
2430- DBUG_RETURN(1); // Quit
2431- }
2432- else
2433- {
2434- if (com_go(&buffer, 0) > 0) // < 0 is not fatal
2435- DBUG_RETURN(1);
2436- }
2437- buffer.length(0);
2438- }
2439- else if (!*ml_comment && (!*in_string && (inchar == '#' ||
2440- (inchar == '-' && pos[1] == '-' &&
2441- /*
2442- The third byte is either whitespace or is the
2443- end of the line -- which would occur only
2444- because of the user sending newline -- which is
2445- itself whitespace and should also match.
2446- */
2447- (my_isspace(charset_info,pos[2]) ||
2448- !pos[2])))))
2449- {
2450- // Flush previously accepted characters
2451- if (out != line)
2452- {
2453- buffer.append(line, (uint32) (out - line));
2454- out= line;
2455- }
2456-
2457- // comment to end of line
2458- if (preserve_comments)
2459- {
2460- bool started_with_nothing= !buffer.length();
2461-
2462- buffer.append(pos);
2463-
2464- /*
2465- A single-line comment by itself gets sent immediately so that
2466- client commands (delimiter, status, etc) will be interpreted on
2467- the next line.
2468- */
2469- if (started_with_nothing)
2470- {
2471- if (com_go(&buffer, 0) > 0) // < 0 is not fatal
2472- DBUG_RETURN(1);
2473- buffer.length(0);
2474- }
2475- }
2476-
2477- break;
2478- }
2479- else if (!*in_string && inchar == '/' && *(pos+1) == '*' &&
2480- *(pos+2) != '!')
2481- {
2482- if (preserve_comments)
2483- {
2484- *out++= *pos++; // copy '/'
2485- *out++= *pos; // copy '*'
2486- }
2487- else
2488- pos++;
2489- *ml_comment= 1;
2490- if (out != line)
2491- {
2492- buffer.append(line,(uint) (out-line));
2493- out=line;
2494- }
2495- }
2496- else if (*ml_comment && !ss_comment && inchar == '*' && *(pos + 1) == '/')
2497- {
2498- if (preserve_comments)
2499- {
2500- *out++= *pos++; // copy '*'
2501- *out++= *pos; // copy '/'
2502- }
2503- else
2504- pos++;
2505- *ml_comment= 0;
2506- if (out != line)
2507- {
2508- buffer.append(line, (uint32) (out - line));
2509- out= line;
2510- }
2511- // Consumed a 2 chars or more, and will add 1 at most,
2512- // so using the 'line' buffer to edit data in place is ok.
2513- need_space= 1;
2514- }
2515- else
2516- { // Add found char to buffer
2517- if (!*in_string && inchar == '/' && *(pos + 1) == '*' &&
2518- *(pos + 2) == '!')
2519- ss_comment= 1;
2520- else if (!*in_string && ss_comment && inchar == '*' && *(pos + 1) == '/')
2521- ss_comment= 0;
2522- if (inchar == *in_string)
2523- *in_string= 0;
2524- else if (!*ml_comment && !*in_string &&
2525- (inchar == '\'' || inchar == '"' || inchar == '`'))
2526- *in_string= (char) inchar;
2527- if (!*ml_comment || preserve_comments)
2528- {
2529- if (need_space && !my_isspace(charset_info, (char)inchar))
2530- *out++= ' ';
2531- need_space= 0;
2532- *out++= (char) inchar;
2533- }
2534- }
2535- }
2536- if (out != line || !buffer.is_empty())
2537- {
2538- uint length=(uint) (out-line);
2539-
2540- if (!truncated && (length < 9 ||
2541- my_strnncoll (charset_info, (uchar *)line, 9,
2542- (const uchar *) "delimiter", 9) ||
2543- (*in_string || *ml_comment)))
2544- {
2545- /*
2546- Don't add a new line in case there's a DELIMITER command to be
2547- added to the glob buffer (e.g. on processing a line like
2548- "<command>;DELIMITER <non-eof>") : similar to how a new line is
2549- not added in the case when the DELIMITER is the first command
2550- entered with an empty glob buffer. However, if the delimiter is
2551- part of a string or a comment, the new line should be added. (e.g.
2552- SELECT '\ndelimiter\n';\n)
2553- */
2554- *out++='\n';
2555- length++;
2556- }
2557- if (buffer.length() + length >= buffer.alloced_length())
2558- buffer.realloc(buffer.length()+length+IO_SIZE);
2559- if ((!*ml_comment || preserve_comments) && buffer.append(line, length))
2560- DBUG_RETURN(1);
2561- }
2562- DBUG_RETURN(0);
2563-}
2564-
2565-/*****************************************************************
2566- Interface to Readline Completion
2567-******************************************************************/
2568-
2569-#ifdef HAVE_READLINE
2570-
2571-C_MODE_START
2572-static char *new_command_generator(const char *text, int);
2573-static char **new_mysql_completion(const char *text, int start, int end);
2574-C_MODE_END
2575-
2576-/*
2577- Tell the GNU Readline library how to complete. We want to try to complete
2578- on command names if this is the first word in the line, or on filenames
2579- if not.
2580-*/
2581-
2582-#if defined(USE_NEW_READLINE_INTERFACE)
2583-static int fake_magic_space(int, int);
2584-extern "C" char *no_completion(const char*,int)
2585-#elif defined(USE_LIBEDIT_INTERFACE)
2586-static int fake_magic_space(const char *, int);
2587-extern "C" int no_completion(const char*,int)
2588-#else
2589-extern "C" char *no_completion()
2590-#endif
2591-{
2592- return 0; /* No filename completion */
2593-}
2594-
2595-/* glues pieces of history back together if in pieces */
2596-static void fix_history(String *final_command)
2597-{
2598- int total_lines = 1;
2599- char *ptr = final_command->c_ptr();
2600- String fixed_buffer; /* Converted buffer */
2601- char str_char = '\0'; /* Character if we are in a string or not */
2602-
2603- /* find out how many lines we have and remove newlines */
2604- while (*ptr != '\0')
2605- {
2606- switch (*ptr) {
2607- /* string character */
2608- case '"':
2609- case '\'':
2610- case '`':
2611- if (str_char == '\0') /* open string */
2612- str_char = *ptr;
2613- else if (str_char == *ptr) /* close string */
2614- str_char = '\0';
2615- fixed_buffer.append(ptr,1);
2616- break;
2617- case '\n':
2618- /*
2619- not in string, change to space
2620- if in string, leave it alone
2621- */
2622- fixed_buffer.append(str_char == '\0' ? " " : "\n");
2623- total_lines++;
2624- break;
2625- case '\\':
2626- fixed_buffer.append('\\');
2627- /* need to see if the backslash is escaping anything */
2628- if (str_char)
2629- {
2630- ptr++;
2631- /* special characters that need escaping */
2632- if (*ptr == '\'' || *ptr == '"' || *ptr == '\\')
2633- fixed_buffer.append(ptr,1);
2634- else
2635- ptr--;
2636- }
2637- break;
2638-
2639- default:
2640- fixed_buffer.append(ptr,1);
2641- }
2642- ptr++;
2643- }
2644- if (total_lines > 1)
2645- add_history(fixed_buffer.ptr());
2646-}
2647-
2648-/*
2649- returns 0 if line matches the previous history entry
2650- returns 1 if the line doesn't match the previous history entry
2651-*/
2652-static int not_in_history(const char *line)
2653-{
2654- HIST_ENTRY *oldhist = history_get(history_length);
2655-
2656- if (oldhist == 0)
2657- return 1;
2658- if (strcmp(oldhist->line,line) == 0)
2659- return 0;
2660- return 1;
2661-}
2662-
2663-
2664-#if defined(USE_NEW_READLINE_INTERFACE)
2665-static int fake_magic_space(int, int)
2666-#else
2667-static int fake_magic_space(const char *, int)
2668-#endif
2669-{
2670- rl_insert(1, ' ');
2671- return 0;
2672-}
2673-
2674-
2675-static void initialize_readline (char *name)
2676-{
2677- /* Allow conditional parsing of the ~/.inputrc file. */
2678- rl_readline_name = name;
2679-
2680- /* Tell the completer that we want a crack first. */
2681-#if defined(USE_NEW_READLINE_INTERFACE)
2682- rl_attempted_completion_function= (rl_completion_func_t*)&new_mysql_completion;
2683- rl_completion_entry_function= (rl_compentry_func_t*)&no_completion;
2684-
2685- rl_add_defun("magic-space", (rl_command_func_t *)&fake_magic_space, -1);
2686-#elif defined(USE_LIBEDIT_INTERFACE)
2687-#ifdef HAVE_LOCALE_H
2688- setlocale(LC_ALL,""); /* so as libedit use isprint */
2689-#endif
2690- rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
2691- rl_completion_entry_function= &no_completion;
2692- rl_add_defun("magic-space", (Function*)&fake_magic_space, -1);
2693-#else
2694- rl_attempted_completion_function= (CPPFunction*)&new_mysql_completion;
2695- rl_completion_entry_function= &no_completion;
2696-#endif
2697-}
2698-
2699-/*
2700- Attempt to complete on the contents of TEXT. START and END show the
2701- region of TEXT that contains the word to complete. We can use the
2702- entire line in case we want to do some simple parsing. Return the
2703- array of matches, or NULL if there aren't any.
2704-*/
2705-
2706-static char **new_mysql_completion(const char *text,
2707- int start __attribute__((unused)),
2708- int end __attribute__((unused)))
2709-{
2710- if (!status.batch && !quick)
2711-#if defined(USE_NEW_READLINE_INTERFACE)
2712- return rl_completion_matches(text, new_command_generator);
2713-#else
2714- return completion_matches((char *)text, (CPFunction *)new_command_generator);
2715-#endif
2716- else
2717- return (char**) 0;
2718-}
2719-
2720-static char *new_command_generator(const char *text,int state)
2721-{
2722- static int textlen;
2723- char *ptr;
2724- static Bucket *b;
2725- static entry *e;
2726- static uint i;
2727-
2728- if (!state)
2729- textlen=(uint) strlen(text);
2730-
2731- if (textlen>0)
2732- { /* lookup in the hash */
2733- if (!state)
2734- {
2735- uint len;
2736-
2737- b = find_all_matches(&ht,text,(uint) strlen(text),&len);
2738- if (!b)
2739- return NullS;
2740- e = b->pData;
2741- }
2742-
2743- if (e)
2744- {
2745- ptr= strdup(e->str);
2746- e = e->pNext;
2747- return ptr;
2748- }
2749- }
2750- else
2751- { /* traverse the entire hash, ugly but works */
2752-
2753- if (!state)
2754- {
2755- /* find the first used bucket */
2756- for (i=0 ; i < ht.nTableSize ; i++)
2757- {
2758- if (ht.arBuckets[i])
2759- {
2760- b = ht.arBuckets[i];
2761- e = b->pData;
2762- break;
2763- }
2764- }
2765- }
2766- ptr= NullS;
2767- while (e && !ptr)
2768- { /* find valid entry in bucket */
2769- if ((uint) strlen(e->str) == b->nKeyLength)
2770- ptr = strdup(e->str);
2771- /* find the next used entry */
2772- e = e->pNext;
2773- if (!e)
2774- { /* find the next used bucket */
2775- b = b->pNext;
2776- if (!b)
2777- {
2778- for (i++ ; i<ht.nTableSize; i++)
2779- {
2780- if (ht.arBuckets[i])
2781- {
2782- b = ht.arBuckets[i];
2783- e = b->pData;
2784- break;
2785- }
2786- }
2787- }
2788- else
2789- e = b->pData;
2790- }
2791- }
2792- if (ptr)
2793- return ptr;
2794- }
2795- return NullS;
2796-}
2797-
2798-
2799-/* Build up the completion hash */
2800-
2801-static void build_completion_hash(bool rehash, bool write_info)
2802-{
2803- COMMANDS *cmd=commands;
2804- MYSQL_RES *databases=0,*tables=0;
2805- MYSQL_RES *fields;
2806- static char ***field_names= 0;
2807- MYSQL_ROW database_row,table_row;
2808- MYSQL_FIELD *sql_field;
2809- char buf[NAME_LEN*2+2]; // table name plus field name plus 2
2810- int i,j,num_fields;
2811- DBUG_ENTER("build_completion_hash");
2812-
2813- if (status.batch || quick || !current_db)
2814- DBUG_VOID_RETURN; // We don't need completion in batches
2815- if (!rehash)
2816- DBUG_VOID_RETURN;
2817-
2818- /* Free old used memory */
2819- if (field_names)
2820- field_names=0;
2821- completion_hash_clean(&ht);
2822- free_root(&hash_mem_root,MYF(0));
2823-
2824- /* hash this file's known subset of SQL commands */
2825- while (cmd->name) {
2826- add_word(&ht,(char*) cmd->name);
2827- cmd++;
2828- }
2829-
2830- /* hash MySQL functions (to be implemented) */
2831-
2832- /* hash all database names */
2833- if (mysql_query(&mysql,"show databases") == 0)
2834- {
2835- if (!(databases = mysql_store_result(&mysql)))
2836- put_info(mysql_error(&mysql),INFO_INFO);
2837- else
2838- {
2839- while ((database_row=mysql_fetch_row(databases)))
2840- {
2841- char *str=strdup_root(&hash_mem_root, (char*) database_row[0]);
2842- if (str)
2843- add_word(&ht,(char*) str);
2844- }
2845- mysql_free_result(databases);
2846- }
2847- }
2848- /* hash all table names */
2849- if (mysql_query(&mysql,"show tables")==0)
2850- {
2851- if (!(tables = mysql_store_result(&mysql)))
2852- put_info(mysql_error(&mysql),INFO_INFO);
2853- else
2854- {
2855- if (mysql_num_rows(tables) > 0 && !opt_silent && write_info)
2856- {
2857- tee_fprintf(stdout, "\
2858-Reading table information for completion of table and column names\n\
2859-You can turn off this feature to get a quicker startup with -A\n\n");
2860- }
2861- while ((table_row=mysql_fetch_row(tables)))
2862- {
2863- char *str=strdup_root(&hash_mem_root, (char*) table_row[0]);
2864- if (str &&
2865- !completion_hash_exists(&ht,(char*) str, (uint) strlen(str)))
2866- add_word(&ht,str);
2867- }
2868- }
2869- }
2870-
2871- /* hash all field names, both with the table prefix and without it */
2872- if (!tables) /* no tables */
2873- {
2874- DBUG_VOID_RETURN;
2875- }
2876- mysql_data_seek(tables,0);
2877- if (!(field_names= (char ***) alloc_root(&hash_mem_root,sizeof(char **) *
2878- (uint) (mysql_num_rows(tables)+1))))
2879- {
2880- mysql_free_result(tables);
2881- DBUG_VOID_RETURN;
2882- }
2883- i=0;
2884- while ((table_row=mysql_fetch_row(tables)))
2885- {
2886- if ((fields=mysql_list_fields(&mysql,(const char*) table_row[0],NullS)))
2887- {
2888- num_fields=mysql_num_fields(fields);
2889- if (!(field_names[i] = (char **) alloc_root(&hash_mem_root,
2890- sizeof(char *) *
2891- (num_fields*2+1))))
2892- {
2893- mysql_free_result(fields);
2894- break;
2895- }
2896- field_names[i][num_fields*2]= '\0';
2897- j=0;
2898- while ((sql_field=mysql_fetch_field(fields)))
2899- {
2900- sprintf(buf,"%.64s.%.64s",table_row[0],sql_field->name);
2901- field_names[i][j] = strdup_root(&hash_mem_root,buf);
2902- add_word(&ht,field_names[i][j]);
2903- field_names[i][num_fields+j] = strdup_root(&hash_mem_root,
2904- sql_field->name);
2905- if (!completion_hash_exists(&ht,field_names[i][num_fields+j],
2906- (uint) strlen(field_names[i][num_fields+j])))
2907- add_word(&ht,field_names[i][num_fields+j]);
2908- j++;
2909- }
2910- mysql_free_result(fields);
2911- }
2912- else
2913- field_names[i]= 0;
2914-
2915- i++;
2916- }
2917- mysql_free_result(tables);
2918- field_names[i]=0; // End pointer
2919- DBUG_VOID_RETURN;
2920-}
2921-
2922- /* for gnu readline */
2923-
2924-#ifndef HAVE_INDEX
2925-extern "C" {
2926-extern char *index(const char *,int c),*rindex(const char *,int);
2927-
2928-char *index(const char *s,int c)
2929-{
2930- for (;;)
2931- {
2932- if (*s == (char) c) return (char*) s;
2933- if (!*s++) return NullS;
2934- }
2935-}
2936-
2937-char *rindex(const char *s,int c)
2938-{
2939- reg3 char *t;
2940-
2941- t = NullS;
2942- do if (*s == (char) c) t = (char*) s; while (*s++);
2943- return (char*) t;
2944-}
2945-}
2946-#endif
2947-#endif /* HAVE_READLINE */
2948-
2949-
2950-static int reconnect(void)
2951-{
2952- /* purecov: begin tested */
2953- if (opt_reconnect)
2954- {
2955- put_info("No connection. Trying to reconnect...",INFO_INFO);
2956- (void) com_connect((String *) 0, 0);
2957- if (opt_rehash)
2958- com_rehash(NULL, NULL);
2959- }
2960- if (!connected)
2961- return put_info("Can't connect to the server\n",INFO_ERROR);
2962- /* purecov: end */
2963- return 0;
2964-}
2965-
2966-static void get_current_db()
2967-{
2968- MYSQL_RES *res;
2969-
2970- /* If one_database is set, current_db is not supposed to change. */
2971- if (one_database)
2972- return;
2973-
2974- my_free(current_db);
2975- current_db= NULL;
2976- /* In case of error below current_db will be NULL */
2977- if (!mysql_query(&mysql, "SELECT DATABASE()") &&
2978- (res= mysql_use_result(&mysql)))
2979- {
2980- MYSQL_ROW row= mysql_fetch_row(res);
2981- if (row && row[0])
2982- current_db= my_strdup(row[0], MYF(MY_WME));
2983- mysql_free_result(res);
2984- }
2985-}
2986-
2987-/***************************************************************************
2988- The different commands
2989-***************************************************************************/
2990-
2991-int mysql_real_query_for_lazy(const char *buf, int length)
2992-{
2993- for (uint retry=0;; retry++)
2994- {
2995- int error;
2996- if (!mysql_real_query(&mysql,buf,length))
2997- return 0;
2998- error= put_error(&mysql);
2999- if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR || retry > 1 ||
3000- !opt_reconnect)
3001- return error;
3002- if (reconnect())
3003- return error;
3004- }
3005-}
3006-
3007-int mysql_store_result_for_lazy(MYSQL_RES **result)
3008-{
3009- if ((*result=mysql_store_result(&mysql)))
3010- return 0;
3011-
3012- if (mysql_error(&mysql)[0])
3013- return put_error(&mysql);
3014- return 0;
3015-}
3016-
3017-static void print_help_item(MYSQL_ROW *cur, int num_name, int num_cat, char *last_char)
3018-{
3019- char ccat= (*cur)[num_cat][0];
3020- if (*last_char != ccat)
3021- {
3022- put_info(ccat == 'Y' ? "categories:" : "topics:", INFO_INFO);
3023- *last_char= ccat;
3024- }
3025- tee_fprintf(PAGER, " %s\n", (*cur)[num_name]);
3026-}
3027-
3028-
3029-static int com_server_help(String *buffer __attribute__((unused)),
3030- char *line __attribute__((unused)), char *help_arg)
3031-{
3032- MYSQL_ROW cur;
3033- const char *server_cmd;
3034- char cmd_buf[100 + 1];
3035- MYSQL_RES *result;
3036- int error;
3037-
3038- if (help_arg[0] != '\'')
3039- {
3040- char *end_arg= strend(help_arg);
3041- if(--end_arg)
3042- {
3043- while (my_isspace(charset_info,*end_arg))
3044- end_arg--;
3045- *++end_arg= '\0';
3046- }
3047- (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help '", help_arg, "'", NullS);
3048- }
3049- else
3050- (void) strxnmov(cmd_buf, sizeof(cmd_buf), "help ", help_arg, NullS);
3051-
3052- server_cmd= cmd_buf;
3053-
3054- if (!status.batch)
3055- {
3056- old_buffer= *buffer;
3057- old_buffer.copy();
3058- }
3059-
3060- if (!connected && reconnect())
3061- return 1;
3062-
3063- if ((error= mysql_real_query_for_lazy(server_cmd,(int)strlen(server_cmd))) ||
3064- (error= mysql_store_result_for_lazy(&result)))
3065- return error;
3066-
3067- if (result)
3068- {
3069- unsigned int num_fields= mysql_num_fields(result);
3070- my_ulonglong num_rows= mysql_num_rows(result);
3071- mysql_fetch_fields(result);
3072- if (num_fields==3 && num_rows==1)
3073- {
3074- if (!(cur= mysql_fetch_row(result)))
3075- {
3076- error= -1;
3077- goto err;
3078- }
3079-
3080- init_pager();
3081- tee_fprintf(PAGER, "Name: \'%s\'\n", cur[0]);
3082- tee_fprintf(PAGER, "Description:\n%s", cur[1]);
3083- if (cur[2] && *((char*)cur[2]))
3084- tee_fprintf(PAGER, "Examples:\n%s", cur[2]);
3085- tee_fprintf(PAGER, "\n");
3086- end_pager();
3087- }
3088- else if (num_fields >= 2 && num_rows)
3089- {
3090- init_pager();
3091- char last_char= 0;
3092-
3093- int num_name= 0, num_cat= 0;
3094- LINT_INIT(num_name);
3095- LINT_INIT(num_cat);
3096-
3097- if (num_fields == 2)
3098- {
3099- put_info("Many help items for your request exist.", INFO_INFO);
3100- put_info("To make a more specific request, please type 'help <item>',\nwhere <item> is one of the following", INFO_INFO);
3101- num_name= 0;
3102- num_cat= 1;
3103- }
3104- else if ((cur= mysql_fetch_row(result)))
3105- {
3106- tee_fprintf(PAGER, "You asked for help about help category: \"%s\"\n", cur[0]);
3107- put_info("For more information, type 'help <item>', where <item> is one of the following", INFO_INFO);
3108- num_name= 1;
3109- num_cat= 2;
3110- print_help_item(&cur,1,2,&last_char);
3111- }
3112-
3113- while ((cur= mysql_fetch_row(result)))
3114- print_help_item(&cur,num_name,num_cat,&last_char);
3115- tee_fprintf(PAGER, "\n");
3116- end_pager();
3117- }
3118- else
3119- {
3120- put_info("\nNothing found", INFO_INFO);
3121- if (strncasecmp(server_cmd, "help 'contents'", 15) == 0)
3122- {
3123- put_info("\nPlease check if 'help tables' are loaded.\n", INFO_INFO);
3124- goto err;
3125- }
3126- put_info("Please try to run 'help contents' for a list of all accessible topics\n", INFO_INFO);
3127- }
3128- }
3129-
3130-err:
3131- mysql_free_result(result);
3132- return error;
3133-}
3134-
3135-static int
3136-com_help(String *buffer __attribute__((unused)),
3137- char *line __attribute__((unused)))
3138-{
3139- reg1 int i, j;
3140- char * help_arg= strchr(line,' '), buff[32], *end;
3141- if (help_arg)
3142- {
3143- while (my_isspace(charset_info,*help_arg))
3144- help_arg++;
3145- if (*help_arg)
3146- return com_server_help(buffer,line,help_arg);
3147- }
3148-
3149- put_info("\nFor information about Percona products and services, visit:\n"
3150- " http://www.percona.com/\n"
3151- "Percona XtraDB Cluster manual: http://www.percona.com/doc/percona-xtradb-cluster/\n"
3152- "For the MySQL Reference Manual: http://dev.mysql.com/\n"
3153- "To buy Percona support, training, or other products, visit:\n"
3154- " https://www.percona.com/\n", INFO_INFO);
3155- put_info("List of all MySQL commands:", INFO_INFO);
3156- if (!named_cmds)
3157- put_info("Note that all text commands must be first on line and end with ';'",INFO_INFO);
3158- for (i = 0; commands[i].name; i++)
3159- {
3160- end= strmov(buff, commands[i].name);
3161- for (j= (int)strlen(commands[i].name); j < 10; j++)
3162- end= strmov(end, " ");
3163- if (commands[i].func)
3164- tee_fprintf(stdout, "%s(\\%c) %s\n", buff,
3165- commands[i].cmd_char, commands[i].doc);
3166- }
3167- if (connected && mysql_get_server_version(&mysql) >= 40100)
3168- put_info("\nFor server side help, type 'help contents'\n", INFO_INFO);
3169- return 0;
3170-}
3171-
3172-
3173- /* ARGSUSED */
3174-static int
3175-com_clear(String *buffer,char *line __attribute__((unused)))
3176-{
3177-#ifdef HAVE_READLINE
3178- if (status.add_to_history)
3179- fix_history(buffer);
3180-#endif
3181- buffer->length(0);
3182- return 0;
3183-}
3184-
3185- /* ARGSUSED */
3186-static int
3187-com_charset(String *buffer __attribute__((unused)), char *line)
3188-{
3189- char buff[256], *param;
3190- CHARSET_INFO * new_cs;
3191- strmake(buff, line, sizeof(buff) - 1);
3192- param= get_arg(buff, 0);
3193- if (!param || !*param)
3194- {
3195- return put_info("Usage: \\C charset_name | charset charset_name",
3196- INFO_ERROR, 0);
3197- }
3198- new_cs= get_charset_by_csname(param, MY_CS_PRIMARY, MYF(MY_WME));
3199- if (new_cs)
3200- {
3201- charset_info= new_cs;
3202- mysql_set_character_set(&mysql, charset_info->csname);
3203- default_charset= (char *)charset_info->csname;
3204- put_info("Charset changed", INFO_INFO);
3205- }
3206- else put_info("Charset is not found", INFO_INFO);
3207- return 0;
3208-}
3209-
3210-/*
3211- Execute command
3212- Returns: 0 if ok
3213- -1 if not fatal error
3214- 1 if fatal error
3215-*/
3216-
3217-
3218-static int
3219-com_go(String *buffer,char *line __attribute__((unused)))
3220-{
3221- char buff[200]; /* about 110 chars used so far */
3222- char time_buff[52+3+1]; /* time max + space&parens + NUL */
3223- MYSQL_RES *result;
3224- ulong timer, warnings= 0;
3225- uint error= 0;
3226- int err= 0;
3227-
3228- interrupted_query= 0;
3229- if (!status.batch)
3230- {
3231- old_buffer= *buffer; // Save for edit command
3232- old_buffer.copy();
3233- }
3234-
3235- /* Remove garbage for nicer messages */
3236- LINT_INIT(buff[0]);
3237- remove_cntrl(*buffer);
3238-
3239- if (buffer->is_empty())
3240- {
3241- if (status.batch) // Ignore empty quries
3242- return 0;
3243- return put_info("No query specified\n",INFO_ERROR);
3244-
3245- }
3246- if (!connected && reconnect())
3247- {
3248- buffer->length(0); // Remove query on error
3249- return opt_reconnect ? -1 : 1; // Fatal error
3250- }
3251- if (verbose)
3252- (void) com_print(buffer,0);
3253-
3254- if (skip_updates &&
3255- (buffer->length() < 4 || my_strnncoll(charset_info,
3256- (const uchar*)buffer->ptr(),4,
3257- (const uchar*)"SET ",4)))
3258- {
3259- (void) put_info("Ignoring query to other database",INFO_INFO);
3260- return 0;
3261- }
3262-
3263- timer=start_timer();
3264- executing_query= 1;
3265- error= mysql_real_query_for_lazy(buffer->ptr(),buffer->length());
3266-
3267-#ifdef HAVE_READLINE
3268- if (status.add_to_history)
3269- {
3270- buffer->append(vertical ? "\\G" : delimiter);
3271- /* Append final command onto history */
3272- fix_history(buffer);
3273- }
3274-#endif
3275-#ifndef __WIN__
3276- if (opt_syslog && buffer->length() && connect_flag == CLIENT_INTERACTIVE){
3277- write_syslog(buffer);
3278- }
3279-#endif
3280-
3281- buffer->length(0);
3282-
3283- if (error)
3284- goto end;
3285-
3286- do
3287- {
3288- char *pos;
3289-
3290- if (quick)
3291- {
3292- if (!(result=mysql_use_result(&mysql)) && mysql_field_count(&mysql))
3293- {
3294- error= put_error(&mysql);
3295- goto end;
3296- }
3297- }
3298- else
3299- {
3300- error= mysql_store_result_for_lazy(&result);
3301- if (error)
3302- goto end;
3303- }
3304-
3305- if (verbose >= 3 || !opt_silent)
3306- mysql_end_timer(timer,time_buff);
3307- else
3308- time_buff[0]= '\0';
3309-
3310- /* Every branch must truncate buff . */
3311- if (result)
3312- {
3313- if (!mysql_num_rows(result) && ! quick && !column_types_flag)
3314- {
3315- strmov(buff, "Empty set");
3316- if (opt_xml)
3317- {
3318- /*
3319- We must print XML header and footer
3320- to produce a well-formed XML even if
3321- the result set is empty (Bug#27608).
3322- */
3323- init_pager();
3324- print_table_data_xml(result);
3325- end_pager();
3326- }
3327- }
3328- else
3329- {
3330- init_pager();
3331- if (opt_html)
3332- print_table_data_html(result);
3333- else if (opt_xml)
3334- print_table_data_xml(result);
3335- else if (vertical || (auto_vertical_output && (get_terminal_width() < get_result_width(result))))
3336- print_table_data_vertically(result);
3337- else if (opt_silent && verbose <= 2 && !output_tables)
3338- print_tab_data(result);
3339- else
3340- print_table_data(result);
3341- sprintf(buff,"%ld %s in set",
3342- (long) mysql_num_rows(result),
3343- (long) mysql_num_rows(result) == 1 ? "row" : "rows");
3344- end_pager();
3345- if (mysql_errno(&mysql))
3346- error= put_error(&mysql);
3347- }
3348- }
3349- else if (mysql_affected_rows(&mysql) == ~(ulonglong) 0)
3350- strmov(buff,"Query OK");
3351- else
3352- sprintf(buff,"Query OK, %ld %s affected",
3353- (long) mysql_affected_rows(&mysql),
3354- (long) mysql_affected_rows(&mysql) == 1 ? "row" : "rows");
3355-
3356- pos=strend(buff);
3357- if ((warnings= mysql_warning_count(&mysql)))
3358- {
3359- *pos++= ',';
3360- *pos++= ' ';
3361- pos=int10_to_str(warnings, pos, 10);
3362- pos=strmov(pos, " warning");
3363- if (warnings != 1)
3364- *pos++= 's';
3365- }
3366- strmov(pos, time_buff);
3367- put_info(buff,INFO_RESULT);
3368- if (mysql_info(&mysql))
3369- put_info(mysql_info(&mysql),INFO_RESULT);
3370- put_info("",INFO_RESULT); // Empty row
3371-
3372- if (result && !mysql_eof(result)) /* Something wrong when using quick */
3373- error= put_error(&mysql);
3374- else if (unbuffered)
3375- fflush(stdout);
3376- mysql_free_result(result);
3377- } while (!(err= mysql_next_result(&mysql)));
3378- if (err >= 1)
3379- error= put_error(&mysql);
3380-
3381-end:
3382-
3383- /* Show warnings if any or error occured */
3384- if (show_warnings == 1 && (warnings >= 1 || error))
3385- print_warnings();
3386-
3387- if (!error && !status.batch &&
3388- (mysql.server_status & SERVER_STATUS_DB_DROPPED))
3389- get_current_db();
3390-
3391- executing_query= 0;
3392- return error; /* New command follows */
3393-}
3394-
3395-
3396-static void init_pager()
3397-{
3398-#ifdef USE_POPEN
3399- if (!opt_nopager)
3400- {
3401- if (!(PAGER= popen(pager, "w")))
3402- {
3403- tee_fprintf(stdout, "popen() failed! defaulting PAGER to stdout!\n");
3404- PAGER= stdout;
3405- }
3406- }
3407- else
3408-#endif
3409- PAGER= stdout;
3410-}
3411-
3412-static void end_pager()
3413-{
3414-#ifdef USE_POPEN
3415- if (!opt_nopager)
3416- pclose(PAGER);
3417-#endif
3418-}
3419-
3420-
3421-static void init_tee(const char *file_name)
3422-{
3423- FILE* new_outfile;
3424- if (opt_outfile)
3425- end_tee();
3426- if (!(new_outfile= my_fopen(file_name, O_APPEND | O_WRONLY, MYF(MY_WME))))
3427- {
3428- tee_fprintf(stdout, "Error logging to file '%s'\n", file_name);
3429- return;
3430- }
3431- OUTFILE = new_outfile;
3432- strmake(outfile, file_name, FN_REFLEN-1);
3433- tee_fprintf(stdout, "Logging to file '%s'\n", file_name);
3434- opt_outfile= 1;
3435- return;
3436-}
3437-
3438-
3439-static void end_tee()
3440-{
3441- my_fclose(OUTFILE, MYF(0));
3442- OUTFILE= 0;
3443- opt_outfile= 0;
3444- return;
3445-}
3446-
3447-
3448-static int
3449-com_ego(String *buffer,char *line)
3450-{
3451- int result;
3452- bool oldvertical=vertical;
3453- vertical=1;
3454- result=com_go(buffer,line);
3455- vertical=oldvertical;
3456- return result;
3457-}
3458-
3459-
3460-static const char *fieldtype2str(enum enum_field_types type)
3461-{
3462- switch (type) {
3463- case MYSQL_TYPE_BIT: return "BIT";
3464- case MYSQL_TYPE_BLOB: return "BLOB";
3465- case MYSQL_TYPE_DATE: return "DATE";
3466- case MYSQL_TYPE_DATETIME: return "DATETIME";
3467- case MYSQL_TYPE_NEWDECIMAL: return "NEWDECIMAL";
3468- case MYSQL_TYPE_DECIMAL: return "DECIMAL";
3469- case MYSQL_TYPE_DOUBLE: return "DOUBLE";
3470- case MYSQL_TYPE_ENUM: return "ENUM";
3471- case MYSQL_TYPE_FLOAT: return "FLOAT";
3472- case MYSQL_TYPE_GEOMETRY: return "GEOMETRY";
3473- case MYSQL_TYPE_INT24: return "INT24";
3474- case MYSQL_TYPE_LONG: return "LONG";
3475- case MYSQL_TYPE_LONGLONG: return "LONGLONG";
3476- case MYSQL_TYPE_LONG_BLOB: return "LONG_BLOB";
3477- case MYSQL_TYPE_MEDIUM_BLOB: return "MEDIUM_BLOB";
3478- case MYSQL_TYPE_NEWDATE: return "NEWDATE";
3479- case MYSQL_TYPE_NULL: return "NULL";
3480- case MYSQL_TYPE_SET: return "SET";
3481- case MYSQL_TYPE_SHORT: return "SHORT";
3482- case MYSQL_TYPE_STRING: return "STRING";
3483- case MYSQL_TYPE_TIME: return "TIME";
3484- case MYSQL_TYPE_TIMESTAMP: return "TIMESTAMP";
3485- case MYSQL_TYPE_TINY: return "TINY";
3486- case MYSQL_TYPE_TINY_BLOB: return "TINY_BLOB";
3487- case MYSQL_TYPE_VAR_STRING: return "VAR_STRING";
3488- case MYSQL_TYPE_YEAR: return "YEAR";
3489- default: return "?-unknown-?";
3490- }
3491-}
3492-
3493-static char *fieldflags2str(uint f) {
3494- static char buf[1024];
3495- char *s=buf;
3496- *s=0;
3497-#define ff2s_check_flag(X) \
3498- if (f & X ## _FLAG) { s=strmov(s, # X " "); f &= ~ X ## _FLAG; }
3499- ff2s_check_flag(NOT_NULL);
3500- ff2s_check_flag(PRI_KEY);
3501- ff2s_check_flag(UNIQUE_KEY);
3502- ff2s_check_flag(MULTIPLE_KEY);
3503- ff2s_check_flag(BLOB);
3504- ff2s_check_flag(UNSIGNED);
3505- ff2s_check_flag(ZEROFILL);
3506- ff2s_check_flag(BINARY);
3507- ff2s_check_flag(ENUM);
3508- ff2s_check_flag(AUTO_INCREMENT);
3509- ff2s_check_flag(TIMESTAMP);
3510- ff2s_check_flag(SET);
3511- ff2s_check_flag(NO_DEFAULT_VALUE);
3512- ff2s_check_flag(NUM);
3513- ff2s_check_flag(PART_KEY);
3514- ff2s_check_flag(GROUP);
3515- ff2s_check_flag(UNIQUE);
3516- ff2s_check_flag(BINCMP);
3517- ff2s_check_flag(ON_UPDATE_NOW);
3518-#undef ff2s_check_flag
3519- if (f)
3520- sprintf(s, " unknows=0x%04x", f);
3521- return buf;
3522-}
3523-
3524-static void
3525-print_field_types(MYSQL_RES *result)
3526-{
3527- MYSQL_FIELD *field;
3528- uint i=0;
3529-
3530- while ((field = mysql_fetch_field(result)))
3531- {
3532- tee_fprintf(PAGER, "Field %3u: `%s`\n"
3533- "Catalog: `%s`\n"
3534- "Database: `%s`\n"
3535- "Table: `%s`\n"
3536- "Org_table: `%s`\n"
3537- "Type: %s\n"
3538- "Collation: %s (%u)\n"
3539- "Length: %lu\n"
3540- "Max_length: %lu\n"
3541- "Decimals: %u\n"
3542- "Flags: %s\n\n",
3543- ++i,
3544- field->name, field->catalog, field->db, field->table,
3545- field->org_table, fieldtype2str(field->type),
3546- get_charset_name(field->charsetnr), field->charsetnr,
3547- field->length, field->max_length, field->decimals,
3548- fieldflags2str(field->flags));
3549- }
3550- tee_puts("", PAGER);
3551-}
3552-
3553-
3554-static void
3555-print_table_data(MYSQL_RES *result)
3556-{
3557- String separator(256);
3558- MYSQL_ROW cur;
3559- MYSQL_FIELD *field;
3560- bool *num_flag;
3561-
3562- num_flag=(bool*) my_alloca(sizeof(bool)*mysql_num_fields(result));
3563- if (column_types_flag)
3564- {
3565- print_field_types(result);
3566- if (!mysql_num_rows(result))
3567- return;
3568- mysql_field_seek(result,0);
3569- }
3570- separator.copy("+",1,charset_info);
3571- while ((field = mysql_fetch_field(result)))
3572- {
3573- uint length= column_names ? field->name_length : 0;
3574- if (quick)
3575- length=max(length,field->length);
3576- else
3577- length=max(length,field->max_length);
3578- if (length < 4 && !IS_NOT_NULL(field->flags))
3579- length=4; // Room for "NULL"
3580- field->max_length=length;
3581- separator.fill(separator.length()+length+2,'-');
3582- separator.append('+');
3583- }
3584- separator.append('\0'); // End marker for \0
3585- tee_puts((char*) separator.ptr(), PAGER);
3586- if (column_names)
3587- {
3588- mysql_field_seek(result,0);
3589- (void) tee_fputs("|", PAGER);
3590- for (uint off=0; (field = mysql_fetch_field(result)) ; off++)
3591- {
3592- uint name_length= (uint) strlen(field->name);
3593- uint numcells= charset_info->cset->numcells(charset_info,
3594- field->name,
3595- field->name + name_length);
3596- uint display_length= field->max_length + name_length - numcells;
3597- tee_fprintf(PAGER, " %-*s |",(int) min(display_length,
3598- MAX_COLUMN_LENGTH),
3599- field->name);
3600- num_flag[off]= IS_NUM(field->type);
3601- }
3602- (void) tee_fputs("\n", PAGER);
3603- tee_puts((char*) separator.ptr(), PAGER);
3604- }
3605-
3606- while ((cur= mysql_fetch_row(result)))
3607- {
3608- if (interrupted_query)
3609- break;
3610- ulong *lengths= mysql_fetch_lengths(result);
3611- (void) tee_fputs("| ", PAGER);
3612- mysql_field_seek(result, 0);
3613- for (uint off= 0; off < mysql_num_fields(result); off++)
3614- {
3615- const char *buffer;
3616- uint data_length;
3617- uint field_max_length;
3618- uint visible_length;
3619- uint extra_padding;
3620-
3621- if (off)
3622- (void) tee_fputs(" ", PAGER);
3623-
3624- if (cur[off] == NULL)
3625- {
3626- buffer= "NULL";
3627- data_length= 4;
3628- }
3629- else
3630- {
3631- buffer= cur[off];
3632- data_length= (uint) lengths[off];
3633- }
3634-
3635- field= mysql_fetch_field(result);
3636- field_max_length= field->max_length;
3637-
3638- /*
3639- How many text cells on the screen will this string span? If it contains
3640- multibyte characters, then the number of characters we occupy on screen
3641- will be fewer than the number of bytes we occupy in memory.
3642-
3643- We need to find how much screen real-estate we will occupy to know how
3644- many extra padding-characters we should send with the printing function.
3645- */
3646- visible_length= charset_info->cset->numcells(charset_info, buffer, buffer + data_length);
3647- extra_padding= data_length - visible_length;
3648-
3649- if (field_max_length > MAX_COLUMN_LENGTH)
3650- tee_print_sized_data(buffer, data_length, MAX_COLUMN_LENGTH+extra_padding, FALSE);
3651- else
3652- {
3653- if (num_flag[off] != 0) /* if it is numeric, we right-justify it */
3654- tee_print_sized_data(buffer, data_length, field_max_length+extra_padding, TRUE);
3655- else
3656- tee_print_sized_data(buffer, data_length, field_max_length+extra_padding, FALSE);
3657- }
3658- tee_fputs(" |", PAGER);
3659- }
3660- (void) tee_fputs("\n", PAGER);
3661- }
3662- tee_puts((char*) separator.ptr(), PAGER);
3663- my_afree((uchar*) num_flag);
3664-}
3665-
3666-/**
3667- Return the length of a field after it would be rendered into text.
3668-
3669- This doesn't know or care about multibyte characters. Assume we're
3670- using such a charset. We can't know that all of the upcoming rows
3671- for this column will have bytes that each render into some fraction
3672- of a character. It's at least possible that a row has bytes that
3673- all render into one character each, and so the maximum length is
3674- still the number of bytes. (Assumption 1: This can't be better
3675- because we can never know the number of characters that the DB is
3676- going to send -- only the number of bytes. 2: Chars <= Bytes.)
3677-
3678- @param field Pointer to a field to be inspected
3679-
3680- @returns number of character positions to be used, at most
3681-*/
3682-static int get_field_disp_length(MYSQL_FIELD *field)
3683-{
3684- uint length= column_names ? field->name_length : 0;
3685-
3686- if (quick)
3687- length= max(length, field->length);
3688- else
3689- length= max(length, field->max_length);
3690-
3691- if (length < 4 && !IS_NOT_NULL(field->flags))
3692- length= 4; /* Room for "NULL" */
3693-
3694- return length;
3695-}
3696-
3697-/**
3698- For a new result, return the max number of characters that any
3699- upcoming row may return.
3700-
3701- @param result Pointer to the result to judge
3702-
3703- @returns The max number of characters in any row of this result
3704-*/
3705-static int get_result_width(MYSQL_RES *result)
3706-{
3707- unsigned int len= 0;
3708- MYSQL_FIELD *field;
3709- MYSQL_FIELD_OFFSET offset;
3710-
3711-#ifndef DBUG_OFF
3712- offset= mysql_field_tell(result);
3713- DBUG_ASSERT(offset == 0);
3714-#else
3715- offset= 0;
3716-#endif
3717-
3718- while ((field= mysql_fetch_field(result)) != NULL)
3719- len+= get_field_disp_length(field) + 3; /* plus bar, space, & final space */
3720-
3721- (void) mysql_field_seek(result, offset);
3722-
3723- return len + 1; /* plus final bar. */
3724-}
3725-
3726-static void
3727-tee_print_sized_data(const char *data, unsigned int data_length, unsigned int total_bytes_to_send, bool right_justified)
3728-{
3729- /*
3730- For '\0's print ASCII spaces instead, as '\0' is eaten by (at
3731- least my) console driver, and that messes up the pretty table
3732- grid. (The \0 is also the reason we can't use fprintf() .)
3733- */
3734- unsigned int i;
3735- const char *p;
3736-
3737- if (right_justified)
3738- for (i= data_length; i < total_bytes_to_send; i++)
3739- tee_putc((int)' ', PAGER);
3740-
3741- for (i= 0, p= data; i < data_length; i+= 1, p+= 1)
3742- {
3743- if (*p == '\0')
3744- tee_putc((int)' ', PAGER);
3745- else
3746- tee_putc((int)*p, PAGER);
3747- }
3748-
3749- if (! right_justified)
3750- for (i= data_length; i < total_bytes_to_send; i++)
3751- tee_putc((int)' ', PAGER);
3752-}
3753-
3754-
3755-
3756-static void
3757-print_table_data_html(MYSQL_RES *result)
3758-{
3759- MYSQL_ROW cur;
3760- MYSQL_FIELD *field;
3761-
3762- mysql_field_seek(result,0);
3763- (void) tee_fputs("<TABLE BORDER=1><TR>", PAGER);
3764- if (column_names)
3765- {
3766- while((field = mysql_fetch_field(result)))
3767- {
3768- tee_fputs("<TH>", PAGER);
3769- if (field->name && field->name[0])
3770- xmlencode_print(field->name, field->name_length);
3771- else
3772- tee_fputs(field->name ? " &nbsp; " : "NULL", PAGER);
3773- tee_fputs("</TH>", PAGER);
3774- }
3775- (void) tee_fputs("</TR>", PAGER);
3776- }
3777- while ((cur = mysql_fetch_row(result)))
3778- {
3779- if (interrupted_query)
3780- break;
3781- ulong *lengths=mysql_fetch_lengths(result);
3782- (void) tee_fputs("<TR>", PAGER);
3783- for (uint i=0; i < mysql_num_fields(result); i++)
3784- {
3785- (void) tee_fputs("<TD>", PAGER);
3786- xmlencode_print(cur[i], lengths[i]);
3787- (void) tee_fputs("</TD>", PAGER);
3788- }
3789- (void) tee_fputs("</TR>", PAGER);
3790- }
3791- (void) tee_fputs("</TABLE>", PAGER);
3792-}
3793-
3794-
3795-static void
3796-print_table_data_xml(MYSQL_RES *result)
3797-{
3798- MYSQL_ROW cur;
3799- MYSQL_FIELD *fields;
3800-
3801- mysql_field_seek(result,0);
3802-
3803- tee_fputs("<?xml version=\"1.0\"?>\n\n<resultset statement=\"", PAGER);
3804- xmlencode_print(glob_buffer.ptr(), (int)strlen(glob_buffer.ptr()));
3805- tee_fputs("\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">",
3806- PAGER);
3807-
3808- fields = mysql_fetch_fields(result);
3809- while ((cur = mysql_fetch_row(result)))
3810- {
3811- if (interrupted_query)
3812- break;
3813- ulong *lengths=mysql_fetch_lengths(result);
3814- (void) tee_fputs("\n <row>\n", PAGER);
3815- for (uint i=0; i < mysql_num_fields(result); i++)
3816- {
3817- tee_fprintf(PAGER, "\t<field name=\"");
3818- xmlencode_print(fields[i].name, (uint) strlen(fields[i].name));
3819- if (cur[i])
3820- {
3821- tee_fprintf(PAGER, "\">");
3822- xmlencode_print(cur[i], lengths[i]);
3823- tee_fprintf(PAGER, "</field>\n");
3824- }
3825- else
3826- tee_fprintf(PAGER, "\" xsi:nil=\"true\" />\n");
3827- }
3828- (void) tee_fputs(" </row>\n", PAGER);
3829- }
3830- (void) tee_fputs("</resultset>\n", PAGER);
3831-}
3832-
3833-
3834-static void
3835-print_table_data_vertically(MYSQL_RES *result)
3836-{
3837- MYSQL_ROW cur;
3838- uint max_length=0;
3839- MYSQL_FIELD *field;
3840-
3841- while ((field = mysql_fetch_field(result)))
3842- {
3843- uint length= field->name_length;
3844- if (length > max_length)
3845- max_length= length;
3846- field->max_length=length;
3847- }
3848-
3849- mysql_field_seek(result,0);
3850- for (uint row_count=1; (cur= mysql_fetch_row(result)); row_count++)
3851- {
3852- if (interrupted_query)
3853- break;
3854- mysql_field_seek(result,0);
3855- tee_fprintf(PAGER,
3856- "*************************** %d. row ***************************\n", row_count);
3857-
3858- ulong *lengths= mysql_fetch_lengths(result);
3859-
3860- for (uint off=0; off < mysql_num_fields(result); off++)
3861- {
3862- field= mysql_fetch_field(result);
3863- if (column_names)
3864- tee_fprintf(PAGER, "%*s: ",(int) max_length,field->name);
3865- if (cur[off])
3866- {
3867- unsigned int i;
3868- const char *p;
3869-
3870- for (i= 0, p= cur[off]; i < lengths[off]; i+= 1, p+= 1)
3871- {
3872- if (*p == '\0')
3873- tee_putc((int)' ', PAGER);
3874- else
3875- tee_putc((int)*p, PAGER);
3876- }
3877- tee_putc('\n', PAGER);
3878- }
3879- else
3880- tee_fprintf(PAGER, "NULL\n");
3881- }
3882- }
3883-}
3884-
3885-
3886-/* print_warnings should be called right after executing a statement */
3887-
3888-static void print_warnings()
3889-{
3890- const char *query;
3891- MYSQL_RES *result;
3892- MYSQL_ROW cur;
3893- my_ulonglong num_rows;
3894-
3895- /* Save current error before calling "show warnings" */
3896- uint error= mysql_errno(&mysql);
3897-
3898- /* Get the warnings */
3899- query= "show warnings";
3900- mysql_real_query_for_lazy(query, strlen(query));
3901- mysql_store_result_for_lazy(&result);
3902-
3903- /* Bail out when no warnings */
3904- if (!result || !(num_rows= mysql_num_rows(result)))
3905- goto end;
3906-
3907- cur= mysql_fetch_row(result);
3908-
3909- /*
3910- Don't print a duplicate of the current error. It is possible for SHOW
3911- WARNINGS to return multiple errors with the same code, but different
3912- messages. To be safe, skip printing the duplicate only if it is the only
3913- warning.
3914- */
3915- if (!cur || (num_rows == 1 && error == (uint) strtoul(cur[1], NULL, 10)))
3916- goto end;
3917-
3918- /* Print the warnings */
3919- init_pager();
3920- do
3921- {
3922- tee_fprintf(PAGER, "%s (Code %s): %s\n", cur[0], cur[1], cur[2]);
3923- } while ((cur= mysql_fetch_row(result)));
3924- end_pager();
3925-
3926-end:
3927- mysql_free_result(result);
3928-}
3929-
3930-
3931-static const char *array_value(const char **array, char key)
3932-{
3933- for (; *array; array+= 2)
3934- if (**array == key)
3935- return array[1];
3936- return 0;
3937-}
3938-
3939-
3940-static void
3941-xmlencode_print(const char *src, uint length)
3942-{
3943- if (!src)
3944- tee_fputs("NULL", PAGER);
3945- else
3946- {
3947- for (const char *p = src; length; p++, length--)
3948- {
3949- const char *t;
3950- if ((t = array_value(xmlmeta, *p)))
3951- tee_fputs(t, PAGER);
3952- else
3953- tee_putc(*p, PAGER);
3954- }
3955- }
3956-}
3957-
3958-
3959-static void
3960-safe_put_field(const char *pos,ulong length)
3961-{
3962- if (!pos)
3963- tee_fputs("NULL", PAGER);
3964- else
3965- {
3966- if (opt_raw_data)
3967- {
3968- unsigned long i;
3969- /* Can't use tee_fputs(), it stops with NUL characters. */
3970- for (i= 0; i < length; i++, pos++)
3971- tee_putc(*pos, PAGER);
3972- }
3973- else for (const char *end=pos+length ; pos != end ; pos++)
3974- {
3975-#ifdef USE_MB
3976- int l;
3977- if (use_mb(charset_info) &&
3978- (l = my_ismbchar(charset_info, pos, end)))
3979- {
3980- while (l--)
3981- tee_putc(*pos++, PAGER);
3982- pos--;
3983- continue;
3984- }
3985-#endif
3986- if (!*pos)
3987- tee_fputs("\\0", PAGER); // This makes everything hard
3988- else if (*pos == '\t')
3989- tee_fputs("\\t", PAGER); // This would destroy tab format
3990- else if (*pos == '\n')
3991- tee_fputs("\\n", PAGER); // This too
3992- else if (*pos == '\\')
3993- tee_fputs("\\\\", PAGER);
3994- else
3995- tee_putc(*pos, PAGER);
3996- }
3997- }
3998-}
3999-
4000-
4001-static void
4002-print_tab_data(MYSQL_RES *result)
4003-{
4004- MYSQL_ROW cur;
4005- MYSQL_FIELD *field;
4006- ulong *lengths;
4007-
4008- if (opt_silent < 2 && column_names)
4009- {
4010- int first=0;
4011- while ((field = mysql_fetch_field(result)))
4012- {
4013- if (first++)
4014- (void) tee_fputs("\t", PAGER);
4015- (void) tee_fputs(field->name, PAGER);
4016- }
4017- (void) tee_fputs("\n", PAGER);
4018- }
4019- while ((cur = mysql_fetch_row(result)))
4020- {
4021- lengths=mysql_fetch_lengths(result);
4022- safe_put_field(cur[0],lengths[0]);
4023- for (uint off=1 ; off < mysql_num_fields(result); off++)
4024- {
4025- (void) tee_fputs("\t", PAGER);
4026- safe_put_field(cur[off], lengths[off]);
4027- }
4028- (void) tee_fputs("\n", PAGER);
4029- }
4030-}
4031-
4032-static int
4033-com_tee(String *buffer __attribute__((unused)),
4034- char *line __attribute__((unused)))
4035-{
4036- char file_name[FN_REFLEN], *end, *param;
4037-
4038- if (status.batch)
4039- return 0;
4040- while (my_isspace(charset_info,*line))
4041- line++;
4042- if (!(param = strchr(line, ' '))) // if outfile wasn't given, use the default
4043- {
4044- if (!strlen(outfile))
4045- {
4046- printf("No previous outfile available, you must give a filename!\n");
4047- return 0;
4048- }
4049- else if (opt_outfile)
4050- {
4051- tee_fprintf(stdout, "Currently logging to file '%s'\n", outfile);
4052- return 0;
4053- }
4054- else
4055- param = outfile; //resume using the old outfile
4056- }
4057-
4058- /* eliminate the spaces before the parameters */
4059- while (my_isspace(charset_info,*param))
4060- param++;
4061- end= strmake(file_name, param, sizeof(file_name) - 1);
4062- /* remove end space from command line */
4063- while (end > file_name && (my_isspace(charset_info,end[-1]) ||
4064- my_iscntrl(charset_info,end[-1])))
4065- end--;
4066- end[0]= 0;
4067- if (end == file_name)
4068- {
4069- printf("No outfile specified!\n");
4070- return 0;
4071- }
4072- init_tee(file_name);
4073- return 0;
4074-}
4075-
4076-
4077-static int
4078-com_notee(String *buffer __attribute__((unused)),
4079- char *line __attribute__((unused)))
4080-{
4081- if (opt_outfile)
4082- end_tee();
4083- tee_fprintf(stdout, "Outfile disabled.\n");
4084- return 0;
4085-}
4086-
4087-/*
4088- Sorry, this command is not available in Windows.
4089-*/
4090-
4091-#ifdef USE_POPEN
4092-static int
4093-com_pager(String *buffer __attribute__((unused)),
4094- char *line __attribute__((unused)))
4095-{
4096- char pager_name[FN_REFLEN], *end, *param;
4097-
4098- if (status.batch)
4099- return 0;
4100- /* Skip spaces in front of the pager command */
4101- while (my_isspace(charset_info, *line))
4102- line++;
4103- /* Skip the pager command */
4104- param= strchr(line, ' ');
4105- /* Skip the spaces between the command and the argument */
4106- while (param && my_isspace(charset_info, *param))
4107- param++;
4108- if (!param || !strlen(param)) // if pager was not given, use the default
4109- {
4110- if (!default_pager_set)
4111- {
4112- tee_fprintf(stdout, "Default pager wasn't set, using stdout.\n");
4113- opt_nopager=1;
4114- strmov(pager, "stdout");
4115- PAGER= stdout;
4116- return 0;
4117- }
4118- strmov(pager, default_pager);
4119- }
4120- else
4121- {
4122- end= strmake(pager_name, param, sizeof(pager_name)-1);
4123- while (end > pager_name && (my_isspace(charset_info,end[-1]) ||
4124- my_iscntrl(charset_info,end[-1])))
4125- end--;
4126- end[0]=0;
4127- strmov(pager, pager_name);
4128- strmov(default_pager, pager_name);
4129- }
4130- opt_nopager=0;
4131- tee_fprintf(stdout, "PAGER set to '%s'\n", pager);
4132- return 0;
4133-}
4134-
4135-
4136-static int
4137-com_nopager(String *buffer __attribute__((unused)),
4138- char *line __attribute__((unused)))
4139-{
4140- strmov(pager, "stdout");
4141- opt_nopager=1;
4142- PAGER= stdout;
4143- tee_fprintf(stdout, "PAGER set to stdout\n");
4144- return 0;
4145-}
4146-#endif
4147-
4148-
4149-/*
4150- Sorry, you can't send the result to an editor in Win32
4151-*/
4152-
4153-#ifdef USE_POPEN
4154-static int
4155-com_edit(String *buffer,char *line __attribute__((unused)))
4156-{
4157- char filename[FN_REFLEN],buff[160];
4158- int fd,tmp;
4159- const char *editor;
4160-
4161- if ((fd=create_temp_file(filename,NullS,"sql", O_CREAT | O_WRONLY,
4162- MYF(MY_WME))) < 0)
4163- goto err;
4164- if (buffer->is_empty() && !old_buffer.is_empty())
4165- (void) my_write(fd,(uchar*) old_buffer.ptr(),old_buffer.length(),
4166- MYF(MY_WME));
4167- else
4168- (void) my_write(fd,(uchar*) buffer->ptr(),buffer->length(),MYF(MY_WME));
4169- (void) my_close(fd,MYF(0));
4170-
4171- if (!(editor = (char *)getenv("EDITOR")) &&
4172- !(editor = (char *)getenv("VISUAL")))
4173- editor = "vi";
4174- strxmov(buff,editor," ",filename,NullS);
4175- if(system(buff) == -1)
4176- goto err;
4177-
4178- MY_STAT stat_arg;
4179- if (!my_stat(filename,&stat_arg,MYF(MY_WME)))
4180- goto err;
4181- if ((fd = my_open(filename,O_RDONLY, MYF(MY_WME))) < 0)
4182- goto err;
4183- (void) buffer->alloc((uint) stat_arg.st_size);
4184- if ((tmp=read(fd,(char*) buffer->ptr(),buffer->alloced_length())) >= 0L)
4185- buffer->length((uint) tmp);
4186- else
4187- buffer->length(0);
4188- (void) my_close(fd,MYF(0));
4189- (void) my_delete(filename,MYF(MY_WME));
4190-err:
4191- return 0;
4192-}
4193-#endif
4194-
4195-
4196-/* If arg is given, exit without errors. This happens on command 'quit' */
4197-
4198-static int
4199-com_quit(String *buffer __attribute__((unused)),
4200- char *line __attribute__((unused)))
4201-{
4202- status.exit_status=0;
4203- return 1;
4204-}
4205-
4206-static int
4207-com_rehash(String *buffer __attribute__((unused)),
4208- char *line __attribute__((unused)))
4209-{
4210-#ifdef HAVE_READLINE
4211- build_completion_hash(1, 0);
4212-#endif
4213- return 0;
4214-}
4215-
4216-
4217-#ifdef USE_POPEN
4218-static int
4219-com_shell(String *buffer __attribute__((unused)),
4220- char *line __attribute__((unused)))
4221-{
4222- char *shell_cmd;
4223-
4224- /* Skip space from line begin */
4225- while (my_isspace(charset_info, *line))
4226- line++;
4227- if (!(shell_cmd = strchr(line, ' ')))
4228- {
4229- put_info("Usage: \\! shell-command", INFO_ERROR);
4230- return -1;
4231- }
4232- /*
4233- The output of the shell command does not
4234- get directed to the pager or the outfile
4235- */
4236- if (system(shell_cmd) == -1)
4237- {
4238- put_info(strerror(errno), INFO_ERROR, errno);
4239- return -1;
4240- }
4241- return 0;
4242-}
4243-#endif
4244-
4245-
4246-static int
4247-com_print(String *buffer,char *line __attribute__((unused)))
4248-{
4249- tee_puts("--------------", stdout);
4250- (void) tee_fputs(buffer->c_ptr(), stdout);
4251- if (!buffer->length() || (*buffer)[buffer->length()-1] != '\n')
4252- tee_putc('\n', stdout);
4253- tee_puts("--------------\n", stdout);
4254- return 0; /* If empty buffer */
4255-}
4256-
4257- /* ARGSUSED */
4258-static int
4259-com_connect(String *buffer, char *line)
4260-{
4261- char *tmp, buff[256];
4262- bool save_rehash= opt_rehash;
4263- int error;
4264-
4265- bzero(buff, sizeof(buff));
4266- if (buffer)
4267- {
4268- /*
4269- Two null bytes are needed in the end of buff to allow
4270- get_arg to find end of string the second time it's called.
4271- */
4272- tmp= strmake(buff, line, sizeof(buff)-2);
4273-#ifdef EXTRA_DEBUG
4274- tmp[1]= 0;
4275-#endif
4276- tmp= get_arg(buff, 0);
4277- if (tmp && *tmp)
4278- {
4279- my_free(current_db);
4280- current_db= my_strdup(tmp, MYF(MY_WME));
4281- tmp= get_arg(buff, 1);
4282- if (tmp)
4283- {
4284- my_free(current_host);
4285- current_host=my_strdup(tmp,MYF(MY_WME));
4286- }
4287- }
4288- else
4289- {
4290- /* Quick re-connect */
4291- opt_rehash= 0; /* purecov: tested */
4292- }
4293- buffer->length(0); // command used
4294- }
4295- else
4296- opt_rehash= 0;
4297- error=sql_connect(current_host,current_db,current_user,opt_password,0);
4298- opt_rehash= save_rehash;
4299-
4300- if (connected)
4301- {
4302- sprintf(buff,"Connection id: %lu",mysql_thread_id(&mysql));
4303- put_info(buff,INFO_INFO);
4304- sprintf(buff,"Current database: %.128s\n",
4305- current_db ? current_db : "*** NONE ***");
4306- put_info(buff,INFO_INFO);
4307- }
4308- return error;
4309-}
4310-
4311-
4312-static int com_source(String *buffer __attribute__((unused)),
4313- char *line)
4314-{
4315- char source_name[FN_REFLEN], *end, *param;
4316- LINE_BUFFER *line_buff;
4317- int error;
4318- STATUS old_status;
4319- FILE *sql_file;
4320-
4321- /* Skip space from file name */
4322- while (my_isspace(charset_info,*line))
4323- line++;
4324- if (!(param = strchr(line, ' '))) // Skip command name
4325- return put_info("Usage: \\. <filename> | source <filename>",
4326- INFO_ERROR, 0);
4327- while (my_isspace(charset_info,*param))
4328- param++;
4329- end=strmake(source_name,param,sizeof(source_name)-1);
4330- while (end > source_name && (my_isspace(charset_info,end[-1]) ||
4331- my_iscntrl(charset_info,end[-1])))
4332- end--;
4333- end[0]=0;
4334- unpack_filename(source_name,source_name);
4335- /* open file name */
4336- if (!(sql_file = my_fopen(source_name, O_RDONLY | O_BINARY,MYF(0))))
4337- {
4338- char buff[FN_REFLEN+60];
4339- sprintf(buff,"Failed to open file '%s', error: %d", source_name,errno);
4340- return put_info(buff, INFO_ERROR, 0);
4341- }
4342-
4343- if (!(line_buff= batch_readline_init(MAX_BATCH_BUFFER_SIZE, sql_file)))
4344- {
4345- my_fclose(sql_file,MYF(0));
4346- return put_info("Can't initialize batch_readline", INFO_ERROR, 0);
4347- }
4348-
4349- /* Save old status */
4350- old_status=status;
4351- bfill((char*) &status,sizeof(status),(char) 0);
4352-
4353- status.batch=old_status.batch; // Run in batch mode
4354- status.line_buff=line_buff;
4355- status.file_name=source_name;
4356- glob_buffer.length(0); // Empty command buffer
4357- error= read_and_execute(false);
4358- status=old_status; // Continue as before
4359- my_fclose(sql_file,MYF(0));
4360- batch_readline_end(line_buff);
4361- return error;
4362-}
4363-
4364-
4365- /* ARGSUSED */
4366-static int
4367-com_delimiter(String *buffer __attribute__((unused)), char *line)
4368-{
4369- char buff[256], *tmp;
4370-
4371- strmake(buff, line, sizeof(buff) - 1);
4372- tmp= get_arg(buff, 0);
4373-
4374- if (!tmp || !*tmp)
4375- {
4376- put_info("DELIMITER must be followed by a 'delimiter' character or string",
4377- INFO_ERROR);
4378- return 0;
4379- }
4380- else
4381- {
4382- if (strstr(tmp, "\\"))
4383- {
4384- put_info("DELIMITER cannot contain a backslash character", INFO_ERROR);
4385- return 0;
4386- }
4387- }
4388- strmake(delimiter, tmp, sizeof(delimiter) - 1);
4389- delimiter_length= (int)strlen(delimiter);
4390- delimiter_str= delimiter;
4391- return 0;
4392-}
4393-
4394- /* ARGSUSED */
4395-static int
4396-com_use(String *buffer __attribute__((unused)), char *line)
4397-{
4398- char *tmp, buff[FN_REFLEN + 1];
4399- int select_db;
4400-
4401- bzero(buff, sizeof(buff));
4402-
4403- /*
4404- In case number of quotes exceed 2, we try to get
4405- the normalized db name.
4406- */
4407- if (get_quote_count(line) > 2)
4408- {
4409- if (normalize_dbname(line, buff, sizeof(buff)))
4410- return put_error(&mysql);
4411- tmp= buff;
4412- }
4413- else
4414- {
4415- strmake(buff, line, sizeof(buff) - 1);
4416- tmp= get_arg(buff, 0);
4417- }
4418-
4419- if (!tmp || !*tmp)
4420- {
4421- put_info("USE must be followed by a database name", INFO_ERROR);
4422- return 0;
4423- }
4424- /*
4425- We need to recheck the current database, because it may change
4426- under our feet, for example if DROP DATABASE or RENAME DATABASE
4427- (latter one not yet available by the time the comment was written)
4428- */
4429- get_current_db();
4430-
4431- if (!current_db || cmp_database(charset_info, current_db,tmp))
4432- {
4433- if (one_database)
4434- {
4435- skip_updates= 1;
4436- select_db= 0; // don't do mysql_select_db()
4437- }
4438- else
4439- select_db= 2; // do mysql_select_db() and build_completion_hash()
4440- }
4441- else
4442- {
4443- /*
4444- USE to the current db specified.
4445- We do need to send mysql_select_db() to make server
4446- update database level privileges, which might
4447- change since last USE (see bug#10979).
4448- For performance purposes, we'll skip rebuilding of completion hash.
4449- */
4450- skip_updates= 0;
4451- select_db= 1; // do only mysql_select_db(), without completion
4452- }
4453-
4454- if (select_db)
4455- {
4456- /*
4457- reconnect once if connection is down or if connection was found to
4458- be down during query
4459- */
4460- if (!connected && reconnect())
4461- return opt_reconnect ? -1 : 1; // Fatal error
4462- if (mysql_select_db(&mysql,tmp))
4463- {
4464- if (mysql_errno(&mysql) != CR_SERVER_GONE_ERROR)
4465- return put_error(&mysql);
4466-
4467- if (reconnect())
4468- return opt_reconnect ? -1 : 1; // Fatal error
4469- if (mysql_select_db(&mysql,tmp))
4470- return put_error(&mysql);
4471- }
4472- my_free(current_db);
4473- current_db=my_strdup(tmp,MYF(MY_WME));
4474-#ifdef HAVE_READLINE
4475- if (select_db > 1)
4476- build_completion_hash(opt_rehash, 1);
4477-#endif
4478- }
4479-
4480- put_info("Database changed",INFO_INFO);
4481- return 0;
4482-}
4483-
4484-/**
4485- Normalize database name.
4486-
4487- @param line [IN] The command.
4488- @param buff [OUT] Normalized db name.
4489- @param buff_size [IN] Buffer size.
4490-
4491- @return Operation status
4492- @retval 0 Success
4493- @retval 1 Failure
4494-
4495- @note Sometimes server normilizes the database names
4496- & APIs like mysql_select_db() expect normalized
4497- database names. Since it is difficult to perform
4498- the name conversion/normalization on the client
4499- side, this function tries to get the normalized
4500- dbname (indirectly) from the server.
4501-*/
4502-
4503-static int
4504-normalize_dbname(const char *line, char *buff, uint buff_size)
4505-{
4506- MYSQL_RES *res= NULL;
4507-
4508- /* Send the "USE db" commmand to the server. */
4509- if (mysql_query(&mysql, line))
4510- return 1;
4511-
4512- /*
4513- Now, get the normalized database name and store it
4514- into the buff.
4515- */
4516- if (!mysql_query(&mysql, "SELECT DATABASE()") &&
4517- (res= mysql_use_result(&mysql)))
4518- {
4519- MYSQL_ROW row= mysql_fetch_row(res);
4520- if (row && row[0])
4521- {
4522- size_t len= strlen(row[0]);
4523- /* Make sure there is enough room to store the dbname. */
4524- if ((len > buff_size) || ! memcpy(buff, row[0], len))
4525- {
4526- mysql_free_result(res);
4527- return 1;
4528- }
4529- }
4530- mysql_free_result(res);
4531- }
4532-
4533- /* Restore the original database. */
4534- if (current_db && mysql_select_db(&mysql, current_db))
4535- return 1;
4536-
4537- return 0;
4538-}
4539-
4540-static int
4541-com_warnings(String *buffer __attribute__((unused)),
4542- char *line __attribute__((unused)))
4543-{
4544- show_warnings = 1;
4545- put_info("Show warnings enabled.",INFO_INFO);
4546- return 0;
4547-}
4548-
4549-static int
4550-com_nowarnings(String *buffer __attribute__((unused)),
4551- char *line __attribute__((unused)))
4552-{
4553- show_warnings = 0;
4554- put_info("Show warnings disabled.",INFO_INFO);
4555- return 0;
4556-}
4557-
4558-/*
4559- Gets argument from a command on the command line. If get_next_arg is
4560- not defined, skips the command and returns the first argument. The
4561- line is modified by adding zero to the end of the argument. If
4562- get_next_arg is defined, then the function searches for end of string
4563- first, after found, returns the next argument and adds zero to the
4564- end. If you ever wish to use this feature, remember to initialize all
4565- items in the array to zero first.
4566-*/
4567-
4568-char *get_arg(char *line, my_bool get_next_arg)
4569-{
4570- char *ptr, *start;
4571- my_bool quoted= 0, valid_arg= 0;
4572- char qtype= 0;
4573-
4574- ptr= line;
4575- if (get_next_arg)
4576- {
4577- for (; *ptr; ptr++) ;
4578- if (*(ptr + 1))
4579- ptr++;
4580- }
4581- else
4582- {
4583- /* skip leading white spaces */
4584- while (my_isspace(charset_info, *ptr))
4585- ptr++;
4586- if (*ptr == '\\') // short command was used
4587- ptr+= 2;
4588- else
4589- while (*ptr &&!my_isspace(charset_info, *ptr)) // skip command
4590- ptr++;
4591- }
4592- if (!*ptr)
4593- return NullS;
4594- while (my_isspace(charset_info, *ptr))
4595- ptr++;
4596- if (*ptr == '\'' || *ptr == '\"' || *ptr == '`')
4597- {
4598- qtype= *ptr;
4599- quoted= 1;
4600- ptr++;
4601- }
4602- for (start=ptr ; *ptr; ptr++)
4603- {
4604- if (*ptr == '\\' && ptr[1]) // escaped character
4605- {
4606- // Remove the backslash
4607- strmov_overlapp(ptr, ptr+1);
4608- }
4609- else if ((!quoted && *ptr == ' ') || (quoted && *ptr == qtype))
4610- {
4611- *ptr= 0;
4612- break;
4613- }
4614- }
4615- valid_arg= ptr != start;
4616- return valid_arg ? start : NullS;
4617-}
4618-
4619-/*
4620- Number of quotes present in the command's argument.
4621-*/
4622-static int
4623-get_quote_count(const char *line)
4624-{
4625- int quote_count;
4626- const char *ptr= line;
4627-
4628- for(quote_count= 0; ptr ++ && *ptr; ptr= strpbrk(ptr, "\"\'`"))
4629- quote_count ++;
4630-
4631- return quote_count;
4632-}
4633-
4634-static int
4635-sql_real_connect(char *host,char *database,char *user,char *password,
4636- uint silent)
4637-{
4638- if (connected)
4639- {
4640- connected= 0;
4641- mysql_close(&mysql);
4642- }
4643- mysql_init(&mysql);
4644- if (opt_init_command)
4645- mysql_options(&mysql, MYSQL_INIT_COMMAND, opt_init_command);
4646- if (opt_connect_timeout)
4647- {
4648- uint timeout=opt_connect_timeout;
4649- mysql_options(&mysql,MYSQL_OPT_CONNECT_TIMEOUT,
4650- (char*) &timeout);
4651- }
4652- if (opt_compress)
4653- mysql_options(&mysql,MYSQL_OPT_COMPRESS,NullS);
4654- if (opt_secure_auth)
4655- mysql_options(&mysql, MYSQL_SECURE_AUTH, (char *) &opt_secure_auth);
4656- if (using_opt_local_infile)
4657- mysql_options(&mysql,MYSQL_OPT_LOCAL_INFILE, (char*) &opt_local_infile);
4658-#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
4659- if (opt_use_ssl)
4660- mysql_ssl_set(&mysql, opt_ssl_key, opt_ssl_cert, opt_ssl_ca,
4661- opt_ssl_capath, opt_ssl_cipher);
4662- mysql_options(&mysql,MYSQL_OPT_SSL_VERIFY_SERVER_CERT,
4663- (char*)&opt_ssl_verify_server_cert);
4664-#endif
4665- if (opt_protocol)
4666- mysql_options(&mysql,MYSQL_OPT_PROTOCOL,(char*)&opt_protocol);
4667-#ifdef HAVE_SMEM
4668- if (shared_memory_base_name)
4669- mysql_options(&mysql,MYSQL_SHARED_MEMORY_BASE_NAME,shared_memory_base_name);
4670-#endif
4671- if (safe_updates)
4672- {
4673- char init_command[100];
4674- sprintf(init_command,
4675- "SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=%lu,MAX_JOIN_SIZE=%lu",
4676- select_limit,max_join_size);
4677- mysql_options(&mysql, MYSQL_INIT_COMMAND, init_command);
4678- }
4679-
4680- mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, default_charset);
4681-
4682- if (opt_plugin_dir && *opt_plugin_dir)
4683- mysql_options(&mysql, MYSQL_PLUGIN_DIR, opt_plugin_dir);
4684-
4685- if (opt_default_auth && *opt_default_auth)
4686- mysql_options(&mysql, MYSQL_DEFAULT_AUTH, opt_default_auth);
4687-
4688- if (using_opt_enable_cleartext_plugin)
4689- mysql_options(&mysql, MYSQL_ENABLE_CLEARTEXT_PLUGIN,
4690- (char*) &opt_enable_cleartext_plugin);
4691-
4692- if (!mysql_real_connect(&mysql, host, user, password,
4693- database, opt_mysql_port, opt_mysql_unix_port,
4694- connect_flag | CLIENT_MULTI_STATEMENTS))
4695- {
4696- if (!silent ||
4697- (mysql_errno(&mysql) != CR_CONN_HOST_ERROR &&
4698- mysql_errno(&mysql) != CR_CONNECTION_ERROR))
4699- {
4700- (void) put_error(&mysql);
4701- (void) fflush(stdout);
4702- return ignore_errors ? -1 : 1; // Abort
4703- }
4704- return -1; // Retryable
4705- }
4706-
4707- charset_info= mysql.charset;
4708-
4709- connected=1;
4710-#ifndef EMBEDDED_LIBRARY
4711- mysql.reconnect= debug_info_flag; // We want to know if this happens
4712-#else
4713- mysql.reconnect= 1;
4714-#endif
4715-#ifdef HAVE_READLINE
4716- build_completion_hash(opt_rehash, 1);
4717-#endif
4718- return 0;
4719-}
4720-
4721-
4722-static int
4723-sql_connect(char *host,char *database,char *user,char *password,uint silent)
4724-{
4725- bool message=0;
4726- uint count=0;
4727- int error;
4728- for (;;)
4729- {
4730- if ((error=sql_real_connect(host,database,user,password,wait_flag)) >= 0)
4731- {
4732- if (count)
4733- {
4734- tee_fputs("\n", stderr);
4735- (void) fflush(stderr);
4736- }
4737- return error;
4738- }
4739- if (!wait_flag)
4740- return ignore_errors ? -1 : 1;
4741- if (!message && !silent)
4742- {
4743- message=1;
4744- tee_fputs("Waiting",stderr); (void) fflush(stderr);
4745- }
4746- (void) sleep(wait_time);
4747- if (!silent)
4748- {
4749- putc('.',stderr); (void) fflush(stderr);
4750- count++;
4751- }
4752- }
4753-}
4754-
4755-
4756-
4757-static int
4758-com_status(String *buffer __attribute__((unused)),
4759- char *line __attribute__((unused)))
4760-{
4761- const char *status_str;
4762- char buff[40];
4763- ulonglong id;
4764- MYSQL_RES *result;
4765- LINT_INIT(result);
4766-
4767- if (mysql_real_query_for_lazy(
4768- C_STRING_WITH_LEN("select DATABASE(), USER() limit 1")))
4769- return 0;
4770-
4771- tee_puts("--------------", stdout);
4772- usage(1); /* Print version */
4773- tee_fprintf(stdout, "\nConnection id:\t\t%lu\n",mysql_thread_id(&mysql));
4774- /*
4775- Don't remove "limit 1",
4776- it is protection againts SQL_SELECT_LIMIT=0
4777- */
4778- if (!mysql_store_result_for_lazy(&result))
4779- {
4780- MYSQL_ROW cur=mysql_fetch_row(result);
4781- if (cur)
4782- {
4783- tee_fprintf(stdout, "Current database:\t%s\n", cur[0] ? cur[0] : "");
4784- tee_fprintf(stdout, "Current user:\t\t%s\n", cur[1]);
4785- }
4786- mysql_free_result(result);
4787- }
4788-
4789-#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
4790- if ((status_str= mysql_get_ssl_cipher(&mysql)))
4791- tee_fprintf(stdout, "SSL:\t\t\tCipher in use is %s\n",
4792- status_str);
4793- else
4794-#endif /* HAVE_OPENSSL && !EMBEDDED_LIBRARY */
4795- tee_puts("SSL:\t\t\tNot in use", stdout);
4796-
4797- if (skip_updates)
4798- {
4799- vidattr(A_BOLD);
4800- tee_fprintf(stdout, "\nAll updates ignored to this database\n");
4801- vidattr(A_NORMAL);
4802- }
4803-#ifdef USE_POPEN
4804- tee_fprintf(stdout, "Current pager:\t\t%s\n", pager);
4805- tee_fprintf(stdout, "Using outfile:\t\t'%s'\n", opt_outfile ? outfile : "");
4806-#endif
4807- tee_fprintf(stdout, "Using delimiter:\t%s\n", delimiter);
4808- tee_fprintf(stdout, "Server version:\t\t%s\n", server_version_string(&mysql));
4809- tee_fprintf(stdout, "Protocol version:\t%d\n", mysql_get_proto_info(&mysql));
4810- tee_fprintf(stdout, "Connection:\t\t%s\n", mysql_get_host_info(&mysql));
4811- if ((id= mysql_insert_id(&mysql)))
4812- tee_fprintf(stdout, "Insert id:\t\t%s\n", llstr(id, buff));
4813-
4814- /* "limit 1" is protection against SQL_SELECT_LIMIT=0 */
4815- if (mysql_real_query_for_lazy(C_STRING_WITH_LEN(
4816- "select @@character_set_client, @@character_set_connection, "
4817- "@@character_set_server, @@character_set_database limit 1")))
4818- {
4819- if (mysql_errno(&mysql) == CR_SERVER_GONE_ERROR)
4820- return 0;
4821- }
4822- if (!mysql_store_result_for_lazy(&result))
4823- {
4824- MYSQL_ROW cur=mysql_fetch_row(result);
4825- if (cur)
4826- {
4827- tee_fprintf(stdout, "Server characterset:\t%s\n", cur[2] ? cur[2] : "");
4828- tee_fprintf(stdout, "Db characterset:\t%s\n", cur[3] ? cur[3] : "");
4829- tee_fprintf(stdout, "Client characterset:\t%s\n", cur[0] ? cur[0] : "");
4830- tee_fprintf(stdout, "Conn. characterset:\t%s\n", cur[1] ? cur[1] : "");
4831- }
4832- mysql_free_result(result);
4833- }
4834- else
4835- {
4836- /* Probably pre-4.1 server */
4837- tee_fprintf(stdout, "Client characterset:\t%s\n", charset_info->csname);
4838- tee_fprintf(stdout, "Server characterset:\t%s\n", mysql.charset->csname);
4839- }
4840-
4841-#ifndef EMBEDDED_LIBRARY
4842- if (strstr(mysql_get_host_info(&mysql),"TCP/IP") || ! mysql.unix_socket)
4843- tee_fprintf(stdout, "TCP port:\t\t%d\n", mysql.port);
4844- else
4845- tee_fprintf(stdout, "UNIX socket:\t\t%s\n", mysql.unix_socket);
4846- if (mysql.net.compress)
4847- tee_fprintf(stdout, "Protocol:\t\tCompressed\n");
4848-#endif
4849-
4850- if ((status_str= mysql_stat(&mysql)) && !mysql_error(&mysql)[0])
4851- {
4852- ulong sec;
4853- const char *pos= strchr(status_str,' ');
4854- /* print label */
4855- tee_fprintf(stdout, "%.*s\t\t\t", (int) (pos-status_str), status_str);
4856- if ((status_str= str2int(pos,10,0,LONG_MAX,(long*) &sec)))
4857- {
4858- nice_time((double) sec,buff,0);
4859- tee_puts(buff, stdout); /* print nice time */
4860- while (*status_str == ' ')
4861- status_str++; /* to next info */
4862- tee_putc('\n', stdout);
4863- tee_puts(status_str, stdout);
4864- }
4865- }
4866- if (safe_updates)
4867- {
4868- vidattr(A_BOLD);
4869- tee_fprintf(stdout, "\nNote that you are running in safe_update_mode:\n");
4870- vidattr(A_NORMAL);
4871- tee_fprintf(stdout, "\
4872-UPDATEs and DELETEs that don't use a key in the WHERE clause are not allowed.\n\
4873-(One can force an UPDATE/DELETE by adding LIMIT # at the end of the command.)\n\
4874-SELECT has an automatic 'LIMIT %lu' if LIMIT is not used.\n\
4875-Max number of examined row combination in a join is set to: %lu\n\n",
4876-select_limit, max_join_size);
4877- }
4878- tee_puts("--------------\n", stdout);
4879- return 0;
4880-}
4881-
4882-static const char *
4883-server_version_string(MYSQL *con)
4884-{
4885- /* Only one thread calls this, so no synchronization is needed */
4886- if (server_version == NULL)
4887- {
4888- MYSQL_RES *result;
4889-
4890- /* "limit 1" is protection against SQL_SELECT_LIMIT=0 */
4891- if (!mysql_query(con, "select @@version_comment limit 1") &&
4892- (result = mysql_use_result(con)))
4893- {
4894- MYSQL_ROW cur = mysql_fetch_row(result);
4895- if (cur && cur[0])
4896- {
4897- /* version, space, comment, \0 */
4898- size_t len= strlen(mysql_get_server_info(con)) + strlen(cur[0]) + 2;
4899-
4900- if ((server_version= (char *) my_malloc(len, MYF(MY_WME))))
4901- {
4902- char *bufp;
4903- bufp = strmov(server_version, mysql_get_server_info(con));
4904- bufp = strmov(bufp, " ");
4905- (void) strmov(bufp, cur[0]);
4906- }
4907- }
4908- mysql_free_result(result);
4909- }
4910-
4911- /*
4912- If for some reason we didn't get a version_comment, we'll
4913- keep things simple.
4914- */
4915-
4916- if (server_version == NULL)
4917- server_version= my_strdup(mysql_get_server_info(con), MYF(MY_WME));
4918- }
4919-
4920- return server_version ? server_version : "";
4921-}
4922-
4923-static int
4924-put_info(const char *str,INFO_TYPE info_type, uint error, const char *sqlstate)
4925-{
4926- FILE *file= (info_type == INFO_ERROR ? stderr : stdout);
4927- static int inited=0;
4928-
4929- if (status.batch)
4930- {
4931- if (info_type == INFO_ERROR)
4932- {
4933- (void) fflush(file);
4934- fprintf(file,"ERROR");
4935- if (error)
4936- {
4937- if (sqlstate)
4938- (void) fprintf(file," %d (%s)",error, sqlstate);
4939- else
4940- (void) fprintf(file," %d",error);
4941- }
4942- if (status.query_start_line && line_numbers)
4943- {
4944- (void) fprintf(file," at line %lu",status.query_start_line);
4945- if (status.file_name)
4946- (void) fprintf(file," in file: '%s'", status.file_name);
4947- }
4948- (void) fprintf(file,": %s\n",str);
4949- (void) fflush(file);
4950- if (!ignore_errors)
4951- return 1;
4952- }
4953- else if (info_type == INFO_RESULT && verbose > 1)
4954- tee_puts(str, file);
4955- if (unbuffered)
4956- fflush(file);
4957- return info_type == INFO_ERROR ? -1 : 0;
4958- }
4959- if (!opt_silent || info_type == INFO_ERROR)
4960- {
4961- if (!inited)
4962- {
4963- inited=1;
4964-#ifdef HAVE_SETUPTERM
4965- (void) setupterm((char *)0, 1, (int *) 0);
4966-#endif
4967- }
4968- if (info_type == INFO_ERROR)
4969- {
4970- if (!opt_nobeep)
4971- putchar('\a'); /* This should make a bell */
4972- vidattr(A_STANDOUT);
4973- if (error)
4974- {
4975- if (sqlstate)
4976- (void) tee_fprintf(file, "ERROR %d (%s): ", error, sqlstate);
4977- else
4978- (void) tee_fprintf(file, "ERROR %d: ", error);
4979- }
4980- else
4981- tee_puts("ERROR: ", file);
4982- }
4983- else
4984- vidattr(A_BOLD);
4985- (void) tee_puts(str, file);
4986- vidattr(A_NORMAL);
4987- }
4988- if (unbuffered)
4989- fflush(file);
4990- return info_type == INFO_ERROR ? -1 : 0;
4991-}
4992-
4993-
4994-static int
4995-put_error(MYSQL *con)
4996-{
4997- return put_info(mysql_error(con), INFO_ERROR, mysql_errno(con),
4998- mysql_sqlstate(con));
4999-}
5000-
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: